在C++中,是否存在在特定条件下定义/运行宏的问题
Is there anyway to define/run a macro on specific condition in C++?
在C++中是否有定义/运行特定条件下的宏?
我的应用程序在运行时需要一些参数,比如./test -l
如果-l作为参数提供,我想定义一个宏,所以我尝试了:
if (strcmp(argv [2],"-l")==0)
#define LOOPBACK
但这是错误的。我的应用程序总是定义LOOPBACK
!!
预处理器宏执行文本替换,然后将预处理器的输出编译为代码。
这意味着,根据定义,宏只能在编译时(严格地说,在编译之前)定义、重新定义、未定义或扩展。宏无法根据运行时数据进行不同的扩展。
这也意味着宏不遵守任何范围规则。
这就是为什么总是定义LOOPBACK宏——扩展与if
语句无关。
所有预处理器指令(例如:#include
、#define
…)都由在编译器之前运行的预处理器执行/评估。因此,您定义的宏是在不了解if(...)
语句的情况下定义的。
相关文章:
- 运行程序时出现问题
- 循环无限运行C++解决骑士之旅问题
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 如何修复 Onnx运行时会话>运行问题?
- C++ 每次运行程序时我都会"nan"输出的问题
- 在 c++ 中使用 Tensorflow Lite 在边缘 TPU 上运行"mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite"时出现问题
- 使用 ubuntu 终端在 c++ 上运行线程类的问题
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- Arduino:在 loop() 和自定义函数中运行相同的代码时出现问题
- 'make check' GLIBC 运行时的链接问题
- 运行长度编码程序 c++ 的问题
- 运行无限循环的最小二叉树问题
- 运行veins_inet示例 - 未定义的引用的 Omnet++ 问题
- 运行莱文斯坦代码时出现问题
- 父进程意外被子 cmd 杀死.exe运行 java jar 的进程 - WINDOWS 7 问题 - C++
- 运行时C++数组初始化问题
- 我在使用 boost::serialization 时遇到了一个问题,我的代码在 Linux 中运行良好,但在 Wind
- 将程序作为 cronjob 运行C++问题
- Microsoft Visual C++2010学习版安装/运行问题
- Visual Studio、CodeBlocks和Eclipse中的C++编译/运行问题