C в некоторых отношениях намного менее строг, чем C ++.
Подпись функции f()
в C ++ означает функцию без аргументов, и соответствующий компилятор должен обеспечить это. В С, напротив, поведение не определено, и компиляторы не обязаны диагностировать, если функция вызывается с аргументами, даже если она была определена без параметров. На практике современные компиляторы должны как минимум предупреждать о недопустимом использовании.
Кроме того, в прототипе функции объявлений (без определения) в C пустые скобки означают, что параметры не указаны . Впоследствии он может быть определен с любым количеством аргументов.
Чтобы предотвратить это, используйте следующий прототип ISO / IEC 9899 6.7.6.3/10:
int f(void)