В настоящее время я пытаюсь понять, в каких случаях g++ предупреждает о неинициализированных переменных. Рассмотрим следующий фрагмент кода:
#include <iostream>
typedef double barType;
struct foo {
barType bar;
};
int main() {
foo f;
std::cout << f.bar << std::endl;
}
Если я его компилирую, я не получаю предупреждения:
$ g++ -O1 -Wall test.cc -o test
но если я изменяю barType на int:
$ g++ -O1 -Wall test.cc -o test
test.cc: In function ‘int main()’:
test.cc:17: warning: ‘f.foo::bar’ is used uninitialized in this function
Как предупреждение зависит от типа? Он не инициализирован в обоих случаях.
Я использую:
$ g++ --version
g++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Спасибо,
Кто-нибудь