【发布时间】:2021-08-17 20:55:41
【问题描述】:
在 MacOS Big Sur 上尝试编译基于 for 循环的简单范围时,我收到了以下警告:
warning: range-based for loop is a C++11 extension [-Wc++11-extensions]
我尝试使用clang++ 和g++,但都给出了相同的警告。有没有办法始终使用 C++11 进行编译,而无需使用 -std=c++11 且不使用别名?
编辑:我不想使用-std=c++11 的原因是因为我希望编译器默认为 C++11 或更高版本。
【问题讨论】:
-
嗯,范围循环是 C++11 的特性,所以没有。
-std=c++11怎么了? -
"无需使用
-std=c++11" - 为什么?如果您的编译器默认为您不想使用的 C++ 版本,为什么不指定您想要使用的版本? -
有没有办法始终使用 C++11 进行编译,而无需使用 -std=c++11 且不使用别名? 不,不要依赖编译器为您选择正确的选项。如果您不喜欢手动输入所有选项,请使用 CMAKE 或 IDE(例如 VS code、Eclipse 或 XCode)为您构建系统
-
macOS 系统 clang++ 默认为 C++98。它相当现代,因为我相信完全支持 C++17。
-
如果你在命令行输入
g++ myprogram.cpp,那么你做错了什么。您将需要指定输出程序名称,并打开调试信息或优化级别,当然还有“-Wall”。将-std=c++11标志与其他标志一起放入您的构建系统中,或者至少放入您的build.sh中,然后重新开始编程。