Аргументы командной строки

Я знаю, что основная функция может принимать два аргумента int argc и char * agrv []. Это хорошо задокументировано. Однако основная функция также может принимать третий аргумент. Кто-нибудь знает, что это за аргумент?

0

Решение

Это переменные среды, и имеют тот же тип, что и обычный argv, Это не является частью стандарта C ++, но все же может работать на некоторых системах.

Это из более старых систем UNIX, где переменные среды часто передавались следующим образом.

3

Другие решения

Функция main может иметь также четвертый аргумент в Mac OS, в форме char **apple, «содержащий произвольную информацию, предоставленную ОС». Увидеть http://en.wikipedia.org/wiki/Main_function#C_and_C.2B.2B для деталей.

2

Есть только две формы main которые должны быть
поддерживается и которые являются переносимыми для всех платформ. Но
Реализация может добавить любые дополнительные формы, которые она хочет: int main(
double )
было бы законно, например (хотя я никогда не слышал
реализации, которая использует его), как бы int main( char
const* arg0... )
, На практике «классический» Unix будет поддерживать
int main( int argc, char** argv, char** environ ); это
не требуется Posix, и, вероятно, есть некоторые Unix
которые не поддерживают это. За пределами мира Unix многие рано
Реализации C пытались выглядеть как Unix, и поэтому могут также
поддержать это (сегодня больше по причинам обратной совместимости
чем выглядеть как Unix).

Однако это не то, на что вы можете рассчитывать.

2

Вы можете пройти char *env[], однако, для передачи другого набора переменных окружения его не нужно называть так. Вы можете изменить среду, в которой выполняется конкретный процесс.

Увидеть этот В статье есть объяснение.

0
По вопросам рекламы [email protected]