我使用了以下宏:
#define chSTR2(x) #x
#define chSTR1(x) chSTR2(x)
#define TODO(x) message(__FILE__"(" chSTR1(__LINE__) ") : TODO: " #x)
#define TODOEX(msg, usr) __pragma(message(__FILE__"(" chSTR1(__LINE__) ") : TODO("#usr"): " #msg))
当我尝试在我的代码中使用它时:
TODOEX("Implement case when knzKorrIRS=j", kun01826);
我尝试使用gcc编译器(版本4.7.3)在Linux机器上编译它我得到以下错误:
some_file.cpp:152:7: error: 'message' was not declared in this scope
some_file.cpp:152:7: error: '__pragma' was not declared in this scope
在使用Microsoft编译器(Visual Studio 2013)的Windows计算机上,我没有错误,一切正常。
如果我以下列方式在我的代码中使用TODO
#pragma TODO(Some text)
然后一切正常(也在使用gcc的Linux机器上)。
我试图寻找答案,但没有找到任何可以解释gcc问题的方法。所以,可以请有人解释我做错了什么,我怎么能纠正这个问题,它也会在安装了gcc编译器的Linux机器上编译。