У меня есть предупреждение и ошибка с пустым значением;предупреждение: в функции, возвращающей void, ошибка: значение void не игнорируется - PullRequest
0 голосов
/ 13 марта 2019

Мой код получает эти предупреждения, и я не уверен, как их исправить. Предупреждение: 'return' со значением, в функции, возвращающей 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;

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

void print_month(...) означает, что эта функция не будет возвращать значений. Но вы возвращаете значение в конце - return first_day;

Измените void print_month(...) на int print_month(...), чтобы оно возвращало целочисленное значение.

1 голос
/ 13 марта 2019

Функция print_month объявлена ​​с типом возврата void, что означает, что она не возвращает значения. Вот почему вы получаете предупреждение, когда пытаетесь вернуть значение из функции, и предупреждение, когда вы пытаетесь использовать возвращаемое значение функции.

Вы хотите, чтобы эта функция возвращала значение типа int, поэтому измените тип возвращаемого значения на:

int print_month(int month, int year, int first_day, int year_view){
...