宏不能在Linux上用gcc编译

时间:2017-02-18 10:19:44

标签: c++ linux gcc

我使用了以下宏:

#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机器上编译。

0 个答案:

没有答案