'-std=c++11' 对 C++/ObjC++ 有效,但对 C 无效

MOH*_*MED 1 c c++ automake makefile c++11

我正在尝试使用以下配置构建 json-c:

./configure --target=arm-linux-androideabi --host=arm-linux-androideabi \
            --build=x86_64-unknown-linux-gnu
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

cc1: error: command line option '-std=c++11' is valid for C++/ObjC++ but not for C [-Werror]
Run Code Online (Sandbox Code Playgroud)

我试图添加--disable-std-c++11--disable-std-cpp11到配置,但我总是遇到同样的问题。

如何解决?

MOH*_*MED 5

既然没有人回答我,我就自己回答

实际上-std=c++11是由全局变量注入的CPPFLAGS

我只是./configure-std=c++11消失之前添加了以下行

export CPPFLAGS=""
Run Code Online (Sandbox Code Playgroud)

  • CPPFLAGS 中的 CPP 用于 C PreProcessor,而不是 C PlusPlus。后者有一个 CXXFLAGS 环境变量。如果您的全局 CPPFLAGS 中有 `-std=c++11`,那么您做错了,您不应该更改任何脚本来解决它,您应该查看设置该环境变量的内容并摆脱它在那里。 (3认同)