Какова связь `main ()` в g ++ - PullRequest
       15

Какова связь `main ()` в g ++

2 голосов
/ 02 апреля 2019

Согласно ISO_14882_2014, 3.6.1 Основная функция [basic.start.main]

The linkage (3.5) of main is implementation-defined.

Какова его связь с g ++, поскольку официальный документ g ++, похоже, не имеет этогоинформация.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Это прямо не упоминается в руководстве, но в главе «Параметры команды GCC» мы имеем это:

-Wmain Предупредить, если тип main является подозрительным. main должна быть функцией с внешним linkage , возвращая int, принимая либо нулевой аргумент, либо два, либо три аргумента соответствующие типы. Это предупреждение включено по умолчанию в C ++ и включено ‘-Wall’ или ‘-Wpedantic’.

[Акцент добавлен]

Из этого можно сделать вывод, что связь для main в этой реализации является внешней.

0 голосов
/ 02 апреля 2019

Это предотвращает случайный вызов вашей основной функции или написание «неправильной» основной функции.

Функция main не должна использоваться в программе. Связь (3.5) из основных определяется реализацией. Программа, которая определяет основные как удаленный или который объявляет main как встроенный, статический или constexpr плохо сформирован. Имя main не зарезервировано.

...