Krz*_*wek 2 c++ static compilation c++11
只是简短的问题.我可以在编译时使用-Dflag 来定义预处理器变量g++.但有没有办法以这种方式设置常量常量变量的值?
我想避免预处理器.我没有看到任何理由,为什么这是不可能的.
好吧,您无法从编译器开关定义变量.你可以伪造它:
const int my_cli_defined_variable = MY_CLI_DEFINED_VARIABLE
#undef MY_CLI_DEFINED_VARIABLE
Run Code Online (Sandbox Code Playgroud)
然后:
g++ -DMY_CLI_DEFINED_VARIABLE=5 …
Run Code Online (Sandbox Code Playgroud)
第二行将确保您的实际代码不会意外使用预处理器宏,因为宏将不再存在.因此,使用此CLI定义变量的唯一方法是通过const变量以类型安全的方式.
一个完整的例子,它解决了未定义宏时的情况:
const int my_cli_defined_variable =
#ifdef MY_CLI_DEFINED_VARIABLE
MY_CLI_DEFINED_VARIABLE;
#undef MY_CLI_DEFINED_VARIABLE
#else
42;
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1332 次 |
| 最近记录: |