(Di | Tri) графы в C ++ 11

После прочтения орграфов и триграфов я продолжил и протестировал простую программу:

#include <stdio.h>

int main()
{
int a = 0;
//??/
++a;
printf("%d",a);
return 0;
}

и по рефлексу я сделал

g++ -std=c++11 test.c

и, к моему удивлению, не было выдано никаких предупреждений, и был напечатан 0, так что я продолжил и попытался скомпилировать компилятор Си, и он выдал предупреждение из-за триграфа.

Мой вопрос почему -std=c++11 автоматически тянуть в -trigraphs и не выдают предупреждение по умолчанию? (без использования -Wall) Требуются ли реализации определенных функций C ++ 11? (очень сомневаюсь, но стоит спросить)

0

Решение

Переходя -std=c99 имеет тот же эффект, что и включение триграфа и отключение предупреждения.

Это должно позволить триграфу быть строго совместимым со стандартом. Отключение предупреждения удивительно, но обратите внимание, что предупреждение о триграфе игнорируются. Предупреждение, вероятно, уходит, потому что -std не удалось активировать отдельные предупреждения (-Wtrigraphs) о триграфе используемый.

И это, вероятно, следует считать ошибкой.

3

Другие решения

Других решений пока нет …