Tag: 编译器警告

警告:返回类型默认为’int’

我是Linux用户,他开始学习C,我正在尝试编译我输入的这个源: #include main() { float c,d; c = 10215.3; d = c / 3; printf(“%3.2f\n”,d); return 0; } 它使用我编写的makefile编译: cc -Wall -g printf.c -o printf 但是我收到了这个警告: printf.c:2:1:警告:返回类型默认为’int'[-Wreturn-type] 它编译代码,我得到了所需的输出,但我想了解这意味着什么

gcc没有警告未初始化的变量

以下代码具有可能未初始化的变量。 似乎gcc应该生成警告,但不是: $ cat ac int foo(int b) { int a; if (b) a = 1; return a; } $ gcc-4.7 -c -Wall -Wmaybe-uninitialized -o ao ./ac $ gcc-4.7 -v Using built-in specs. COLLECT_GCC=gcc-4.7 COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v –with-pkgversion=’Ubuntu/Linaro 4.7.3-2ubuntu1~12.04′ –with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs –enable-languages=c,c++,go,fortran,objc,obj-c++ –prefix=/usr –program-suffix=-4.7 –enable-shared –enable-linker-build-id –libexecdir=/usr/lib –without-included-gettext –enable-threads=posix –with-gxx-include-dir=/usr/include/c++/4.7 –libdir=/usr/lib –enable-nls […]

我可以让GCC警告将过多的类型传递给函数吗?

以下是一些明显有缺陷的代码,我认为编译器应该发出诊断信息。 但是gcc和g++都没有,即使有我能想到的所有警告选项: -pedantic -Wall -Wextra #include short f(short x) { return x; } int main() { long x = 0x10000007; /* bigger than short */ printf(“%d\n”, f(x)); /* hoping for a warning here */ return 0; } 有没有办法让gcc和g++对此发出警告? 另外,您是否有另一个编译器在默认情况下或在相当常见的额外警告配置中对此进行警告? 注意:我正在使用GCC(C和C ++编译器)版本4.2.4。 编辑:我刚刚发现gcc -Wconversion可以解决这个问题,但g++的相同选项却没有,我在这里真的使用C ++,所以我需要一个g++解决方案(我现在想知道为什么-Wconversion没有似乎是这样)。 编辑: http : //gcc.gnu.org/bugzilla/show_bug.cgi? id = 34389建议这可以在g++ 4.4修复……也许? 我还不清楚它是否是同一个问题和/或修复是否真的出现在那个版本中。 也许有4.3或4.4的人可以试试我的测试用例。

“控制到达无效function的结束”是什么意思?

我在这个二进制搜索算法上遇到了奇怪的编译器错误。 我得到一个警告, control reaches end of non-void function 。 这是什么意思? int binary(int val, int sorted[], int low, int high) { int mid = (low+high)/2; if(high < low) return -1; if(val sorted[mid]) return binary(val, sorted, mid+1, high); else if(val == sorted[mid]) return mid; }