相关疑难解决方法(0)

编译器可以在使用未初始化的值时发出警告吗?

所以,让我说我粗心大意并犯了一个愚蠢的错字..这个档案:

test.c的

#include <stdio.h>

int main()
{
    int x = x;
    printf("%d\n",x);
}
Run Code Online (Sandbox Code Playgroud)

编译好:

mymachine:~ oll$ gcc test.c 
mymachine:~ oll$ ./a.out 
1782198366
Run Code Online (Sandbox Code Playgroud)

显然int x = x是一个错误,但编译器在没有警告的情况下接受了这个.我浪费了几个小时来尝试这个错误.

是否有一个编译器标志,并且可以用于gcc/g ++以使编译器在使用未初始化的堆栈变量时给出警告?这可能会为我节省很多时间.

我试过gcc -O -Wuninitialized test.c- 没用.

提前致谢

编辑:我试过了-Wall,没有提到x

mymachine:~ oll$ gcc -Wall test.c 
test.c: In function ‘main’:
test.c:7: warning: control reaches end of non-void function
Run Code Online (Sandbox Code Playgroud)

编辑:找到解决方案

似乎使用命令行工具gccg++在OS X 10.8中没有提供此警告,使用clang工程:

mymachine:~ oll$ clang -Wall test.c
test.c:5:10: warning: variable 'x' is …
Run Code Online (Sandbox Code Playgroud)

c gcc warnings

9
推荐指数
1
解决办法
422
查看次数

为什么-ansi和-std = c ++ 11在g ++中发生冲突?

为什么-ansi和-std = c ++ 11不能一起工作?(根据其他答案,ANSI恢复到C++ 98)我正在使用g ++ - 4.8.

这是ANSI批准的C++ 11:

http://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2fISO%2fIEC+14882-2012

这让我感到困惑.谢谢!

g++ ansi c++11

4
推荐指数
1
解决办法
3252
查看次数

标签 统计

ansi ×1

c ×1

c++11 ×1

g++ ×1

gcc ×1

warnings ×1