让GCC帮助你更好的工作
上面我们简单介绍了GCC的常用命令行选项,其实GCC的功能比上面提到的那些要丰富得多,GCC对代码的警告、优化、调试等方面提供了丰富的支持,下面我们就从一些例子来看看GCC提供的这些功能。
1.对问题代码提出警告
GCC对程序代码提供了完整的检查功能,由于C/C++语言本身的特点,很多错误都是程序员无意间犯下的,例如使用了未定义的变量、在bool表达式中使用了=而不是==等等问题,利用GCC提供的代码检查功能,我们可以让编译器为我们找到这些问题,避免运行时发生灾难。
首先,我们来看一个“问题代码”
/* test_warning.c We use this file to check the warning facilities provided by GCC*/ #include <stdio.h> #include <stdlib.h>
void main() { /* main should return int*/
int a, b; long long l = 2.2; /* long long type is GNU extension, not standard ANSI / ISO type*/
miss_decl(); /* We call an undeclared function*/
if (a = 0) /* May be we want == here instead of =*/
printf (“a really equals to 0?\n”); if (b != 0) /* We used uninitialized variables*/ /* %d and “We should put b here” don‘t match*/ printf(“We make a mistake again! b = %d\n”, “We should put b here”);
};
void miss_decl() {
/* /* This type of annotation is prohibited*/
printf(“We should put the declaration before it‘s been used!\n”);
}
上面这些代码故意制造了很多编程中出现的常见问题,接下来,我们就用这段代码来检测一下GCC提供的各种常用的警告设施。