Я знаю, что основная функция может принимать два аргумента int argc и char * agrv []. Это хорошо задокументировано. Однако основная функция также может принимать третий аргумент. Кто-нибудь знает, что это за аргумент?
Это переменные среды, и имеют тот же тип, что и обычный argv
, Это не является частью стандарта C ++, но все же может работать на некоторых системах.
Это из более старых систем UNIX, где переменные среды часто передавались следующим образом.
Функция main
может иметь также четвертый аргумент в Mac OS, в форме char **apple
, «содержащий произвольную информацию, предоставленную ОС». Увидеть http://en.wikipedia.org/wiki/Main_function#C_and_C.2B.2B для деталей.
Есть только две формы main
которые должны быть
поддерживается и которые являются переносимыми для всех платформ. Но
Реализация может добавить любые дополнительные формы, которые она хочет: int main(
было бы законно, например (хотя я никогда не слышал
double )
реализации, которая использует его), как бы int main( char
, На практике «классический» Unix будет поддерживать
const* arg0... )
int main( int argc, char** argv, char** environ )
; это
не требуется Posix, и, вероятно, есть некоторые Unix
которые не поддерживают это. За пределами мира Unix многие рано
Реализации C пытались выглядеть как Unix, и поэтому могут также
поддержать это (сегодня больше по причинам обратной совместимости
чем выглядеть как Unix).
Однако это не то, на что вы можете рассчитывать.
Вы можете пройти char *env[]
, однако, для передачи другого набора переменных окружения его не нужно называть так. Вы можете изменить среду, в которой выполняется конкретный процесс.
Увидеть этот В статье есть объяснение.