Я читаю документ о C ++ и C. В документе говорится, что C ++ жестко написан по сравнению с C. Один пример: C позволяет типу функции main()
быть недействительным. С другой стороны, С++ не позволяет этого, и он дал приведенное ниже утверждение из стандарта.
В стандарте С++:
Он должен иметь возвращаемый тип int, но в остальном его тип определяется реализацией. Все реализации должны допускать оба следующих определения main:
int main() { /* … */ }
а также
int main(int argc, char* argv[]) { /* … */ }
Стандарт C говорит то же самое, но имеет дополнительное утверждение.
Если возвращаемый тип не совместим с int, состояние завершения, возвращаемое в хост-среду, не указано.
что указывает на то, что разрешение форм, которые не возвращают int, является преднамеренным.
Когда у вас есть тип оператора, который может быть определен реализацией, вы не даете возможности сообществу разработчиков компилятора С++ разрешить void как тип?
gcc
на соответствие стандартам, всегда используйте-pedantic-errors
. Затем gcc 4.6.2 сообщит об ошибке: возвращаемый тип «main» не «int» [-Wmain] - person Matthew Flaschen   schedule 04.03.2012