如何使用gcc將變量傳遞給C程序?如何使用gcc將變量傳遞給C程序
例如
gcc -o server ./server.c --host=localhost --port=1234
如何訪問我的代碼,這些變量?
謝謝。
如何使用gcc將變量傳遞給C程序?如何使用gcc將變量傳遞給C程序
例如
gcc -o server ./server.c --host=localhost --port=1234
如何訪問我的代碼,這些變量?
謝謝。
你的問題不清楚;至少有兩件事情可能會被問到:如何訪問在程序運行時傳遞給程序的命令行參數,以及在編譯程序時如何訪問傳遞給編譯器的參數。
命令行參數:
./server主機=本地主機--port = 1234
這些經由參數存取以main()
:
int main(int argc, char *argv[]) {
for (int i=0; i<argc; ++i) {
std::cout << argv[i] << '\n';
}
}
getopt
是一個相當解析這些命令行選項的常用方法,儘管它不是C或C++標準的一部分。
編譯參數:
你一定不能訪問傳遞到編譯器的參數,但參數可以檢測你發現他們通過更改編譯環境。例如,如果編譯器採用啓用語言功能的選項,則可以通過檢測功能是否啓用來檢測該選項何時通過。
的gcc -std = C11的main.cpp
int main() {
#if 201112L <= __STDC_VERSION__
printf("compiler was set to C11 mode (or greater).\n");
#else
printf("compiler set to pre-C11 mode.\n");
#endif
}
此外,您可以直接定義在命令行參數的宏編譯器,該方案將能夠訪問。
GCC -DHELLO =「WORLD」的main.cpp
int main() {
#if defined(HELLO)
printf("%s\n", HELLO);
#else
printf("'HELLO' is not defined\n");
#endif
}
如果你想在編譯時定義他們看到-D
PARAM,如果你想在運行時使用類似
int main(int,char**);
int main(int argsc/*argument count*/, char**argv/*argument vector*/)
{
int i;
for(i=0;i<argsc;i++)
{
printf("%s\n",argsv[i]);
}
return 0;
}
如果要將變量傳遞給程序執行,可以使用環境變量。就像這樣:
char* myOption = getenv("MY_OPTION_NAME");
if(!myOption) myOption = "my default value";
//Do whatever you like with the value...
當你罵你的程序,你可以通過之前賦予它們程序名稱直列設置的變量:
MY_OPTION_NAME="foo" ./server
你也可以設置環境變量一勞永逸全部使用
export MY_OPTION_NAME="foo"
這並不完全清楚。如果你在談論命令行參數,那麼這是一個* runtime *的東西,而不是* compile-time *的東西。 –
查看'gcc'的'-D'選項。 –