В C++
существуют 2 действующие версии main()
:
int main() // version 1
int main(int argc, char **argv) // version 2
Но обе перегрузки не могут сосуществовать одновременно. Почему нет? (Возможный вариант использования: при запуске программы с терминала, если аргументы не переданы, вызывается первая версия, в противном случае - вторая версия.)
Выполняет ли компилятор специальную проверку, позволяющую использовать только одну версию для каждого двоичного файла?
C
, потому что вC
также разрешены несколько версийmain()
. Более того,void main()
не поддерживается в C ++, но в основном действует вC
. Однако, упоминаяC++
в вопросе, я не возражал. - person iammilind   schedule 20.06.2011void main()
также не является допустимым C, если вы говорите о Standard C (C89, C90, C99). - person Nawaz   schedule 20.06.2011argc
равно 1, аargv
содержит указатель на имя программы, за которым следует нулевой указатель. Так что даже если бы вы могли его перегрузить, вы бы не захотели такого поведения, поскольку даже без аргументов все еще существует пара argc / argv. - person Steve Jessop   schedule 20.06.2011C
. Спасибо. - person iammilind   schedule 23.05.2012main()
никогда не могут сосуществовать. И C также не выполняет манипуляции, зависящие от сигнатур. - person glglgl   schedule 23.05.2012