如何使用 gcc 将变量传递给 C 程序?
例如
gcc -o server ./server.c --host=localhost --port=1234
如何在我的代码中访问这些变量?
谢谢。
最佳答案
您的问题不清楚;您可能至少会问两件事:如何访问程序运行时传递给程序的命令行参数以及如何访问程序编译时传递给编译器的参数。
命令行参数:
./server --host=localhost --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
}
关于c - 如何使用 gcc 将变量传递给 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18298594/