我的代码收到了这些警告,我不确定如何解决它们。 警告:函数返回值时返回“ 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;
答案 0 :(得分:2)
void print_month(...)
表示此函数将不返回任何值。但是,您在结尾处返回了一个值-return first_day;
将void print_month(...)
更改为int print_month(...)
,使其返回整数值。
答案 1 :(得分:1)
print_month
函数的返回类型为void
,这意味着它不返回任何值。因此,当您尝试从函数返回值时会收到警告,而在尝试使用函数的返回值时会得到警告。
您希望此函数返回类型为int
的值,因此将返回类型更改为:
int print_month(int month, int year, int first_day, int year_view){