int main() против void main() в C
В Си я знаю, что int main() возвращает int, а void main() - нет. Кроме этого, есть ли разница между ними? первый лучше второго?
3 ответа
Подавляющее большинство времени, один из int main(void)
или же int main(int argc, char* argv[])
это то, что вам нужно использовать. В частности, если вы пишете программу, которая будет скомпилирована любым основным компилятором для запуска на персональном компьютере, с полным набором стандартных библиотек C, то вам почти наверняка потребуется вернуть int
от main
,
(Я бы также не использовал пустой список аргументов, см. " Почему мы не используем (void) в main? ")
Стандарт C99 допускает другие сигнатуры, определяемые реализацией, и вы можете использовать их, если вы прочитали руководство для вашего компилятора и сказали, что можете.
(5.1.2.2.1) Он должен быть определен с типом возврата int и без параметров... или с двумя параметрами... или каким-либо другим способом, определяемым реализацией
Лично я бы избегал их, даже если они разрешены (если это возможно), потому что это еще одна вещь, о которой нужно беспокоиться, если вам когда-нибудь понадобится портировать на другую систему.
См. Комментарии ниже " Почему мы не используем (void) в основном? " Для некоторого интересного обсуждения этого.
Если ваша книга говорит void main()
это или очень очень устарело, было написано идиотом (или оба)
edit: ОК, если только вы не находитесь в очень маловероятной системе, где у вас есть отдельная main - см. Почему тип основной функции в C и C++ оставлен на усмотрение пользователя?
void main()
не является действительным C. int main()
является. Это главное отличие.