我有一个带有空值的警告和错误;警告:在函数返回void,错误:void值不被忽略

问题描述 投票:0回答:2

我的代码收到了这些警告,我不知道如何修复它们。警告:'return'带有值,函数返回void [默认启用]错误: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;
c void
2个回答
2
投票

void print_month(...)表示此函数不返回任何值。但是你最后会返回一个值 - return first_day;

void print_month(...)更改为int print_month(...)以使其返回整数值。


1
投票

print_month函数声明为返回类型为void,这意味着它不返回任何值。这就是为什么当您尝试从函数返回值时会收到警告,并在尝试使用函数的返回值时发出警告。

您希望此函数返回int类型的值,因此将返回类型更改为:

int print_month(int month, int year, int first_day, int year_view){
© www.soinside.com 2019 - 2024. All rights reserved.