【发布时间】:2015-02-21 19:43:22
【问题描述】:
在 C++ 中是否可以在特定条件下定义/运行宏?
我的应用程序在运行时需要一些参数,比如./test -l
如果-l作为参数提供,我想定义一个宏,所以我尝试了:
if (strcmp(argv [2],"-l")==0)
#define LOOPBACK
但这是错误的。我的应用程序总是定义LOOPBACK!!
【问题讨论】:
-
您知道宏是在编译时而不是运行时评估的,对吧?
-
问题是预处理器运行在单独的phase 中,基本上与C++ 是分开的。它也在构建期间完全完成,并且在运行时不做任何事情。
-
哎呀,你说得对。谢谢。
-
为什么这么喜欢宏?它们仅在有限的情况下有用,并且在 c++ 中很少使用
-
有时你需要使用你的代码4个不同的目的