我正在使用一个名为Rational Rose for C ++的工具。当定义包含单词“interface”的变量名时,该工具将停止工作并打印出空白错误消息。
支持问题可以在这里看到: https://www-304.ibm.com/support/docview.wss?uid=swg21271841&wv=1
我想添加一个预处理程序指令,以便在使用变量名“interface”时,将显示编译错误。
有些事情:
#define interface #error The Keyword interface is not permitted
答案 0 :(得分:4)
您不能在预处理程序语句中使用预处理程序语句。
但是,您可以沿着以下行强制编译错误:
#define interface -ERROR_interface_is_a_reserved_symbol
在Windows(MS编译器)上,这会指向包含错误的代码行:
yourfile.cpp(82): error C2065: 'ERROR_interface_is_a_reserved_symbol' : undeclared identifier
虽然这似乎是解决问题的错误方法,但会与其他人达成一致。
编辑:正如DeadMG所指出的,只有在寻找精确的变量名而不是部分匹配时,此解决方案才有效。
答案 1 :(得分:4)
您无法使用预处理器获得部分匹配。如果我写IInterface
和EInterface
以及ILikeBigInterfacesAndICannotLie
,那么您就无法使用预处理器来匹配它们。