我々は持っています
int main(int argc, char** argv, char** envc)
普通のために。しかし、これらの代わりに main が持つことができる他の引数があるかどうか知りたいです。また、存在する場合、それは何を指していますか?
さて、内訳は次のとおりです。
argc
-- C 標準argv
-- C 標準env
-- ほとんどの UNIX および MS Win で動作しますが、標準では動作しませんapple
-- Mac OSX と Darwin によって 4 番目の引数として渡されるその他の情報答えは C と C++ で異なります。
C++ では、main
常に を返す必要がありますint
。すべての実装は()
、(int, char**)
署名を受け入れる必要があります。実装は、他の署名を受け入れることができます。受け入れられた署名が で始まる場合int, char**, ...
、それらは通常の意味を持つはずです。(また、main
C リンケージを取得し、オーバーロードしてはならず、テンプレートであってはならず、呼び出してはなりません。)
C では、main
任意の形式を取ることができます。ただし、すべての実装は型を受け入れる必要がint(void)
ありint(int, char**)
ます。
お気付きのように、特定の環境でサポートされ、これらのガイドラインに準拠している一般的な署名の 1 つはint main(int argc, char * argv[], char * env[])
、3 番目の引数に環境へのポインターが含まれている です。他の拡張も考えられます。プラットフォームのドキュメントを確認してください。
argc と argv のみが標準の引数です。それ以降は、システムとコンパイラによって異なります。
私はこれがあなたの質問に答えると思います:
これは標準の拡張です
が、環境へのアクセスを提供することになっています。
int main(int argc, char** argv, char** envc)
{
// It is an array of pointers to C-String
// The array is terminated with a NULL pointer.
// So you can loop over with it like this.
for(int loop = 0;envc[loop] != NULL; ++loop)
{
fprintf(stdout, "%s\n", envc[loop]);
}
}
おそらく使用する方が良いでしょうgetenv
:
char * getenv ( const char * name );