Maj*_*sra -3 c parameters gcc
如何使用gcc将变量传递给C程序?
例如
gcc -o server ./server.c --host=localhost --port=1234
Run Code Online (Sandbox Code Playgroud)
如何在我的代码中访问这些变量?
谢谢.
你的问题不明确; 至少有两件事你可能会问:如何在程序运行时访问传递给程序的命令行参数,以及如何在编译程序时访问传递给编译器的参数.
命令行参数:
./server --host=localhost --port=1234
这些是通过参数访问main():
int main(int argc, char *argv[]) {
for (int i=0; i<argc; ++i) {
std::cout << argv[i] << '\n';
}
}
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
此外,您可以直接在程序将能够访问的编译器的命令行参数中定义宏.
gcc -DHELLO="WORLD" main.cpp
int main() {
#if defined(HELLO)
printf("%s\n", HELLO);
#else
printf("'HELLO' is not defined\n");
#endif
}
Run Code Online (Sandbox Code Playgroud)