#ifdef
可用于确定字符串是否为宏定义。但是我有几个宏定义,如何判断变量的内容是否已被宏定义。例如,
char *str = "Macro"
#ifdef (*str)
有没有办法实现类似的功能?
char *str = "Macro"
#ifdef (*str)
那将永远行不通,因为str
没有宏!*str
预处理器将不接受的语法。顺便说一句:在C ++char *str = "Macro"
中也是错误的,因为您必须使用const char*
!
通常:避免使用宏,因为它们容易出错。它们没有类型,它们是某些文本替换功能的一部分,与C ++中的类型相距甚远。
我如何判断变量的内容是否已被宏定义
variable
预处理器没有意义。而且您无法在预处理器中检查c ++变量,因为预处理器根本不了解C或C ++。它只是一个或多或少简单的文本替换工具,即使编译器和预处理器和C ++解析器实际上都在同一程序中,也可以在编译器解析C ++代码本身之前运行。
那么我在说的是有没有一种可以实现的类似方法呢?
没有!您无法检查变量是否存在。如果不存在,则始终会出现编译错误。您可以使用SFINAE检查变量的值或类型,但不能检查var本身是否存在。
但是真正的用例是什么?您的问题向我们表明,您如何看待自己会意识到什么,但为什么却又不是呢?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句