Почему главный вызов не разрешен в C++, когда он разрешен в C?
По этому вопросу я пытался найти что-то в документации gcc о том, что происходит, когда я вызываю main
в C++. Я ничего не нашел, но обнаружил, что в C его просто прекрасно назвать main
. Обратите внимание, что
#include <iostream>
int main() {
int x;
std::cin >> x;
if (x) main();
}
недопустимо в C++, хотя оно компилируется, если не используется флаг -pedantic
. Тем не менее, называя main
допускается в С.
Чем отличается C++ от запрета вызова main
?
Ответы
Ответ 1
C++ требует создания конструкторов для статических объектов, которые должны быть вызваны - это может быть реализовано в вызове main. Если вы можете вызвать main, конструкторы могут запускаться несколько раз. C не имеет конструкторов, поэтому не имеет одинаковых проблем.