Я хотел бы добавить к уже полученным ответам, сославшись на действующие языковые стандарты.
Это int main; действующая программа на C?
Краткий ответ (мое мнение): только если в вашей реализации используется «автономная среда выполнения».
Все следующие цитаты из C11
5. Окружающая среда
Реализация переводит исходные файлы C и выполняет программы на C в двух средах системы обработки данных, которые будут называться средой перевода и средой выполнения [...]
5.1.2 Среда выполнения
Определены две среды выполнения: автономная и размещенная. В обоих случаях запуск программы происходит, когда среда выполнения вызывает назначенную функцию C.
5.1.2.1 Отдельностоящая среда
В автономной среде (в которой выполнение программы C может происходить без каких-либо преимуществ операционной системы) имя и тип функции, вызываемой при запуске программы, определяются реализацией.
5.1.2.2 Размещенная среда
Размещенная среда не требуется, но она должна соответствовать следующим спецификациям, если они есть.
5.1.2.2.1 Запуск программы
Функция, вызываемая при запуске программы, называется main . [...] Он должен быть определен с возвращаемым типом int и без параметров [...], или с двумя параметрами [...], или эквивалентными, или каким-либо другим способом, определяемым реализацией.
Из них наблюдается следующее:
- Программа C11 может иметь автономную или размещенную среду выполнения и быть действительной.
- Если у него есть отдельно стоящий, не обязательно наличие основной функции.
- В противном случае должен быть такой, у которого значение возврата типа int .
В автономной среде выполнения я бы сказал, что это допустимая программа, которая не позволяет запускать, потому что для этого нет функции, требуемой в 5.1.2. В размещенной среде выполнения, хотя ваш код представляет объект с именем main , он не может предоставить возвращаемое значение, поэтому я бы сказал, что это недопустимая программа в этом смысле, хотя можно было бы также утверждать, как раньше, если программа не предназначено для выполнения (например, может потребоваться предоставить данные), тогда это просто не позволяет сделать это.
Это int main; действующая программа на C ++?
Краткий ответ (мое мнение): только если в вашей реализации используется «автономная среда выполнения».
Цитата из C ++ 14
3.6.1 Основная функция
Программа должна содержать глобальную функцию с именем main, которая является назначенным запуском программы. Это определяется реализацией, требуется ли программа в автономной среде для определения основной функции. [...] Он должен иметь тип возврата типа int, но в остальном его тип определяется реализацией. [...] Имя main иначе не зарезервировано.
Здесь, в отличие от стандарта C11, меньше ограничений применяется к автономной среде выполнения, поскольку функция запуска не упоминается вообще, в то время как для размещенной среды выполнения ситуация в значительной степени такая же, как для C11.
Опять же, я бы сказал, что для размещенного случая ваш код не является допустимой программой на C ++ 14, но я уверен, что он предназначен для автономного случая.
Поскольку в моем ответе рассматривается только среда выполнения , я думаю, что ответ dasblinkenlicht вступает в игру, так как изменение имени происходит в среде перевода заранее. Здесь я не уверен, что приведенные выше цитаты соблюдаются так строго.
gcc -std=c99 -pedantic ...