Можно создать дубликат:
does c++ standard prohibit the void main() prototype?главным образом, не может быть недействительным
Почему C++ не позволяя мне делать void main()
? Это не проблема, но мне все еще интересно.
Можно создать дубликат:
does c++ standard prohibit the void main() prototype?главным образом, не может быть недействительным
Почему C++ не позволяя мне делать void main()
? Это не проблема, но мне все еще интересно.
Поскольку обратный тип main()
(как это предусмотрено в стандарте) должны быть int
C++ 03 [Section 3.6.1
Главная функция]
Реализация не должна предопределять основную функцию. Эта функция не должна быть перегружена. Он должен иметь тип возвращаемого типа int, но в противном случае его тип определяется реализацией.
Потому что стандарт говорит, что возвращает int.
Некоторые операционные системы ожидают интегрального значения возврата от процессов. Объявите main, чтобы вернуть int. Если вы не заботитесь о стоимости, просто возвращают 0.
Из comp.lang.c FAQ:
Вам даже не нужно ничего явно возвращать. – GManNickG
@GMan - хорошая точка. –
ответ от Страуструпом сам:
Могу ли я написать "пустота основной()"? Определение
void main() { /* ... */ }
не и никогда не было C++, равно как и не было даже С. См ISO C++ стандартный 3.6.1 [2] или стандартный 5.1.2.2.1 ISO C. Соответствующая реализация принимает
int main() { /* ... */ }
и
int main(int argc, char* argv[]) { /* ... */ }
Соответствующая реализация может обеспечить несколько версий основной(), но все они должны иметь тип возвращаемого значения Int. Функция int, возвращаемая main(), является способом для программы возвращать значение в «систему», которая вызывает его. В системах, которые не предоставляют такое средство, возвращаемое значение игнорируется, но это не делает «void main()» законным C++ или законным C. Даже если ваш компилятор принимает «void main()», избегает его или рискует будучи не осведомленным программистами C и C++.
В C++ main() не должен содержать явный оператор return. В этом случае возвращаемое значение равно 0, что означает успешное выполнение. Например:
#include<iostream>
int main()
{
std::cout << "This program returns the integer value 0\n";
}
Обратите также внимание, что ни ISO C++, ни C99 не позволяют оставить этот тип из декларации. То есть, в отличие от C89 и ARM C++, «int» не предполагается, когда в декларации отсутствует тип.Следовательно:
#include<iostream>
main() { /* ... */ }
- это ошибка, так как отсутствует тип возврата main().
Источник: http://www2.research.att.com/~bs/bs_faq2.html#void-main
что проблема с Int пустоте() {вернуть 0;}; ? – Max
То же, что и [ ли стандарт C++ запрещает прототип void main()? ] (http://stackoverflow.com/questions/1915659/does-c-standard-prohibit-the-void-main-prototype). –
лучший вопрос - почему вы используете кровопролитие C++;) –