Почему пустое объявление работает для определений с аргументами int, но не для аргументов float?

Я думал, разница в том, что объявление не имеет типов параметров ...

Почему это работает:

int fuc();

int fuc(int i) {
  printf("%d", i);
  return 0;
}

но это не компилируется:

int fuc();

int fuc(float f) {
  printf("%f", f);
  return 0;
}

с сообщением :

ошибка: конфликтующие типы для "fuc". примечание: тип аргумента, имеющий продвижение по умолчанию, не может соответствовать объявлению списка пустых имен параметров

12
задан Ciro Santilli 新疆改造中心法轮功六四事件 25 April 2016 в 07:43
поделиться