C++ 赢得';t用C,C+编译+;以及带有特定错误消息的Obj-C
我正在用另一个宏替换一个C风格的宏C++ 赢得';t用C,C+编译+;以及带有特定错误消息的Obj-C,c++,objective-c,c,macros,C++,Objective C,C,Macros,我正在用另一个宏替换一个C风格的宏 #define OldMacro(…) {…} #define NewMacro(…) {…} 我想重写旧版本的宏,使其无法编译并显示特定的错误消息,例如:“OldMacro()已弃用;请改用NewMacro()”。这可能吗 也可以用C、C++和Objul-C. < P>使用这个宏定义: #define OLD_MACRO() (error_use_of_OLD_MACRO_is_deprecated = 0) #define OldMacro(…)c
#define OldMacro(…) {…}
#define NewMacro(…) {…}
我想重写旧版本的宏,使其无法编译并显示特定的错误消息,例如:“OldMacro()已弃用;请改用NewMacro()”。这可能吗
也可以用C、C++和Objul-C.</P> < P>使用这个宏定义:
#define OLD_MACRO() (error_use_of_OLD_MACRO_is_deprecated = 0)
#define OldMacro(…)char oldMacroIsDeprecatedUseNewMacroInIt[0]
@MooingDuck:如果编译器(例如默认情况下为gcc)允许零大小数组,则这将不起作用。@MooingDuck:或@
在使用宏时强制出现语法错误。这并不能回答您的问题,但您可能想看看的问题10.4。@KeithThompson:有些编译器可能接受@
(我知道有几个编译器接受$
)。无效数组大小的优点是在错误消息中打印对象的名称,而@
可能不会,这比数组技巧I更适用于多种情况think@MooingDuck您知道有一种情况下它不起作用,除非有人定义了一个非常量错误\u use\u of\u OLD\u MACRO\u is\u不推荐的整数兼容变量?