众所周知,当编译包含未初始化变量的程序时,如果加入 -Wall 参数,会显示警告信息(如 main.cpp)。但是当我编译 main_err.cpp 时,编译器没有给出警告信息。请问各位大佬这是什么原因?(代码见下)
main.cpp
#include<cstdio>
int main(){
int a;
printf("%d\n",a);
return 0;
}
main_err.cpp
#include<cstdio>
int main(){
int a=1;
int j;
while(j<=10){
printf("%d\n",a);
j++;
}
return 0;
}
终端输出
noilinux@noilinux-virtual-machine:~/桌面/WorkSpace$ g++ main.cpp -o main -g -Wall -std=c++14
main.cpp: In function ‘int main()’:
main.cpp:5:11: warning: ‘a’ is used uninitialized in this function [-Wuninitialized]
5 | printf("%d\n",a);
| ~~~~~~^~~~~~~~~~
noilinux@noilinux-virtual-machine:~/桌面/WorkSpace$ g++ main_err.cpp -o main_err -g -Wall -std=c++14
gcc 版本
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)