我的代码正在收到这些警告,我不确定如何修复它们。警告:具有值的"返回",在函数返回void时[启用默认为启用]错误:不忽略的空白值,因为它应该为
这是我的一些代码:
void print_month(int month, int year, int first_day, int year_view){
int width, row, col;
int days = days_per_month[month - 1];
if (month == 2){
days += leap_year_correction(year);
}
--month;
if (year_view){
row = (month /3) * 9 +2;
col = (month % 3) * 22;
} else{
row = col = 0;
}
if (year_view){
width = 10 + strlen(month_names[month])/2;
sprintf(grid[row] + col, "%*s", width, month_names[month]);
} else{
width = 8 + strlen(month_names[month])/2;
sprintf(grid[row] + col, "%*s %d", width, month_names[month], year);
}
sprintf(grid[row + 1] + col, "Su Mo Tu We Th Fr Sa");
sprintf(grid[row + 2] + col, "%*s", 3 * first_day, "");
row += 2;
for (int i=1; i <= days; i++){
sprintf(grid[row] + col + 3 * first_day, "%2d", i);
if ((first_day = (first_day + 1) % 7) == 0){
row += 1;
}
}
return first_day;
}
下一部分是我的主要程序中的代码
first_day = find_first_day(month < 0 ? 1 : month, year);
if (month < 0){
sprintf(grid[0] + 30, "%d", year);
for (int i=1; i <= 12; i++){
first_day = print_month(i, year, first_day, 1);
}
} else{
print_month(month, year, first_day, 0);
}
print_grid(month < 0);
return 0;
void print_month(...)
表示此功能将不返回不返回值。但是您在末尾返回一个值-return first_day;
将void print_month(...)
更改为int print_month(...)
,以使其返回整数值。
用 void
的返回类型声明了 print_month
函数,这意味着它没有返回值。这就是为什么当您尝试从函数返回值并在尝试使用函数的返回值时警告并警告时,您会得到警告。
您希望此函数返回类型int
的值,因此将返回类型更改为:
int print_month(int month, int year, int first_day, int year_view){