使用变量名时触发编译错误

时间:2011-06-13 13:20:32

标签: c++ compiler-warnings

我正在使用一个名为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

2 个答案:

答案 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)

您无法使用预处理器获得部分匹配。如果我写IInterfaceEInterface以及ILikeBigInterfacesAndICannotLie,那么您就无法使用预处理器来匹配它们。