<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 上给出了以下警告“
我想知道是什么导致了这个错误?提前致谢。
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
python Argparse的例子。 #python #argparse #command-line