在阅读了有向图和三向图之后,我继续测试了一个简单的程序:
#include <stdio.h>
int main()
{
int a = 0;
//??/
++a;
printf("%d",a);
return 0;
}出于本能,我做到了
g++ -std=c++11 test.c令我惊讶的是,没有发出警告,并且打印了0,所以我继续尝试使用C编译器进行编译,由于三元组的原因,它确实发出了警告。
我的问题是,为什么-std=c++11会自动拉入-trigraphs,并且默认情况下不发出警告?(不使用-Wall)某些C++11功能的实现是否需要它们?(高度怀疑,但值得一问)
发布于 2013-01-10 10:14:39
传递-std=c99与启用三元组和禁用警告具有相同的效果。
它必须使三元图严格符合标准。禁用警告是令人惊讶的,但请注意,警告是关于忽略三元组的。警告可能会消失,因为-std无法激活有关正在使用的三元图的单独警告(-Wtrigraphs)。
这可能应该被认为是一个bug。
https://stackoverflow.com/questions/14248374
复制相似问题