Как я могу заставить GCC / Clang предупреждать об использовании неинициализированных участников? - PullRequest
1 голос
/ 28 июня 2019

Я компилирую код

class Test {
public:
    Test() {}

    int k;
};

int main() {
  Test t;
  std::cout << t.k << "\n";
}

как

g/clang++ main.cpp -Wall -Wextra --std=c++14 -o exe; ./exe

Почему ни один из компиляторов не предупреждает меня о неопределенном значении целого числа, не является ли это очень серьезной потенциальной ошибкой? Как включить предупреждение для неопределенных инициализаций?

1 Ответ

4 голосов
/ 28 июня 2019

Для этого примера GCC дает мне желаемое предупреждение , когда я даю ему -O1 (или выше).

Предположительно, какой бы механизм он не использовал для обнаружения этого, он каким-то образом связан с уровнем оптимизации. Общеизвестно, что это трудно сделать .

Убедитесь, что вы учитываете предупреждения о сборке релиза, а также предупреждения отладки.

...