<command-line>:0:3: 警告:ISO C++11 要求宏名后有空格

Posted

技术标签:

【中文标题】<command-line>:0:3: 警告:ISO C++11 要求宏名后有空格【英文标题】:<command-line>:0:3: warning: ISO C++11 requires whitespace after the macro name 【发布时间】:2017-06-21 14:22:15 【问题描述】:

我正在不同版本的 Ubuntu OS(14.04 和 16.04 LTS)上编译 qt 源代码(C++)。源代码在 14.04 LTS 上编译 (g++),没有警告。但是在 16.04 上给出了以下警告“:0:3: warning: ISO C++11 requires whitespace after the macro name warnings”。

我想知道是什么导致了这个错误?提前致谢。

g++ --version: 5.4.0 20160609.

【问题讨论】:

如果您包含实际的完整警告消息会有所帮助,但我敢打赌警告是由宏名称后缺少空格引起的。 以及围绕错误来源的几行代码。 编译器没有给出代码的确切位置(文件名和行号)。实际上,总警告如下“:0:19:警告:缺少终止”字符:0:3:警告:缺少终止“字符:0:3:警告:ISO C++11 要求宏名称后有空格”。我不知道这是否有助于提供解决方案。 它甚至不包括宏的名称(假设宏不称为“名称”)? 根据我的回答,了解有关您如何尝试构建可执行文件的一些详细信息会有所帮助。 【参考方案1】:

您可能有一个带有无效-D 选项的g++ 命令行。 (或者可能不止一个。)

后两个警告可以由

触发
g++ '-DFOO"unterminated' ...

(注意FOO之后缺少的=。)

由于您可能正在使用某些构建系统,因此可能的原因是不正确的构建配置会导致 -D 参数中出现未终止的引用。 (尽管这句话本身也不是有意的。)

【讨论】:

@NarsiReddyAnugu:正如我所说,如果不了解更多信息,就不可能更精确。如果您可以将实际的 g++ 命令粘贴到您的问题中,那将有很大帮助。【参考方案2】:

此错误也是由您定义名称中的无效字符引起的。我尝试这样做时遇到了同样的错误:

g++ -Dsomedefine++=1

【讨论】:

对可能有用的有效 C++ 字符的其他讨论:***.com/questions/35977940/…

以上是关于<command-line>:0:3: 警告:ISO C++11 要求宏名后有空格的主要内容,如果未能解决你的问题,请参考以下文章

Chapter 4. Using the Gradle Command-Line

UNSIGNED command-line client

Running command-line BLAST

python Argparse的例子。 #python #argparse #command-line

http-server: a command-line http server

How-To: Create ISO Images from Command-Line