2012-02-19 65 views
0

MinGW的编译警告我试着用搜索引擎woht没有运气,也许有人遇到过这种每个G ++

我用MinGW的在我的Windows 7 32位机(不知道MinGW的版本,但G ++版本为g ++(GCC)4.6.1)

我获得每个编译行以下警告:

command-line:0:16: warning: missing whitespace after the macro name 

例如用于编译行:

g++ -c "-D__XXX_WINDOWS__;" -g -Wall -o "XXX.o" -Isrc "src/YYY.cpp" 
+0

什么是命令行? – 2012-02-19 13:59:12

+0

g ++ -c“-D__XXX_WINDOWS__;” -g -Wall -o“XXX.o”-Isrc“src/YYY.cpp” <命令行>:0:16:警告:缺少宏名称后面的空格[缺省为启用] – Boaz 2012-02-19 14:03:04

+1

'“-D__XXX_WINDOWS__; “'真的很奇怪。为什么不只是'-D__XXX_WINDOWS__'? – Mat 2012-02-19 14:06:20

回答

4

问题是您的-D交换机末端的;

你给的命令基本上等同于具有:

#define foo; 

在你的来源。这确实将foo定义为;,但这不是有效的C99(并且可能是打字错误)。来自C99草案的第6.10.3/3草案n1124:

在对象宏的定义中,标识符和替换列表之间应该有空格。

所以编译器会发出警告,或者如果使用-std=c99进行编译时会发出错误。

(您也可以在删除分号后删除引号。)