RIJ*_*JIK 0 c gcc compiler-warnings
所以我浪费了一个小时试图找出我的程序崩溃的原因.碰巧,我忘了把函数的返回语句放进去.
功能大致如下:
structType name(2 parameters){
.....
}
Run Code Online (Sandbox Code Playgroud)
我习惯了警告,返回语句丢失了.为什么不在这里这样做,我怎么能打开这个功能呢?
[我在C中编码]编辑:使用GCC
究其原因,为什么从没有忽略警告return声明的是,它不是"错误" - C标准明确允许它,这样的程序是明确的; 只是,如果没有实际返回,则不使用返回值.
无论默认情况下发出的警告大多数是C标准命名为约束违规的警告 - 符合标准的编译器必须诊断这些警告.因此,使用-pedantic-errors或者-std=c17类似的东西根本不会做任何事情,因为它使得编译器更加迂腐(即更符合诊断)遵循C标准,这标准说这毕竟是可以的.
在GCC中,警告可以通过控制-Wreturn-type,也可以启用-Wall.(你为什么不用-Wall?!):
% echo 'int foo() { }' > noreturn.c && gcc -c -Wreturn-type noreturn.c
noreturn.c: In function ‘foo’:
noreturn.c:1:1: warning: control reaches end of non-void function [-Wreturn-type]
int foo() { }
^~~
Run Code Online (Sandbox Code Playgroud)