В стандарте C указаны две формы определения для main
для
хостинг:
int main(void) { /* ... */ }
и
int main(int argc, char *argv[]) { /* ... */ }
Он может быть определен способами, которые эквивалентны вышеуказанному (для
Например, вы можете изменить имена параметров, заменить int
на typedef
имя, определенное как int
, или напишите char *argv[]
как char **argv
).
Он также может быть определен "каким-то другим способом, определенным реализацией"
- это означает, что такие вещи, как int main(int argc, char *argv[],
char *envp)
, действительны, если реализация документирует их.
Предложение "в некоторых других вариантах, определенных реализацией" не было стандарт 1989/1990; он был добавлен стандартом 1999 года (но более ранние стандартные разрешенные расширения, поэтому реализация может все еще допускают другие формы).
Мой вопрос таков: учитывая текущий (2011) стандарт ISO C, это определение формы
int main() { /* ... */ }
действительный и переносимый для всех размещенных внедрений?
(Обратите внимание, что я не обращаюсь ни к void main
, ни к использованию
int main()
без круглых скобок в С++. Это как раз о
различие между int main(void)
и int main()
в ISO C.)