C ++ 11 N3337 стандартная тяга
Разницы нет.
http://www.open -std.org / ОТК1 / SC22 / wg21 / документы / документы / 2012 / n3337.pdf
Приложение C "Совместимость" C.1.7 Пункт 8: деклараторы говорит:
8.3.5 Изменение: в C ++ функция, объявленная с пустым списком параметров, не принимает аргументов. В С пустой
список параметров означает, что число и тип аргументов функции неизвестны.
Пример:
int f();
// means int f(void) in C ++
// int f( unknown ) in C
Обоснование: это позволяет избежать ошибочных вызовов функций (т. Е. Вызовов функций с неправильным номером или типом
аргументы).
Влияние на исходную функцию: изменение семантики четко определенной функции. Эта функция была помечена как «устаревшая» в C.
8.5.3 функции говорит:
4. Параметр-объявление-предложение определяет аргументы, которые могут быть указаны, и их обработку, когда
функция называется. [...] Если параметр-объявление-предложение пуст, функция
не принимает аргументов Список параметров (void) эквивалентен пустому списку параметров.
C99
Как упоминалось в C ++ 11, int f()
ничего не указывает в аргументах и является устаревшим.
Это может привести либо к рабочему коду, либо к UB.
Я подробно интерпретировал стандарт C99 по адресу: https://stackoverflow.com/a/36292431/895245