安装好GCC后,又进一步研究了它的使用。
首先我建立了一个test.cpp的文件。放在电脑的F盘中。源代码如下:
# include <stdio.h>
main()
{
int a,b;
scanf("%d%d",&a,&b);
int c = a+b;
printf("%d%d\n",c);
}在dos命令行中,编译一下:gcc test.c 程序没有输出,代表一切均好。检查目录(Windows 下用dir),会发现多了一个a.exe,这就是程序的编译结果。
下面的命令会让编译出的可执行程序名为 test.exe : gcc test.cpp -o test。
也许上面的源代码我们能一眼看出哪里出了错误,但当程序复杂时,就不一定了。这时,编译选项就能帮忙:gcc test.cpp -o test -Wall.
这下编译器就会指出3个警告:main 函数没有返回类型、没有返回值、printf的格式字符串可能有问题。
还有一些常用的编译选项:(不会用……╮(╯▽╰)╭写上先留着吧)
-ansi-pedantic:检查代码是否符合ANSI标准(-ansi只是判断是否和ANSI冲突,而-pedantic更加严格)。
它进一步指出了上述代码中的另一个“问题”:ANSI C中不允许临时声明变量,而必须在语句块的首部声明变量。
在C语言中,另一个常用的编译选项是-lm,它让编译器连接数学库,从而允许程序使用math.h中的数学函数。C++编译器会自动连接数学库,
但如果你的程序扩展名是.cpp,且不连接数学库,有时会有意想不到的结果。(啥结果啊(⊙o⊙)…??)
还有一个有用的选项是-DDEBUG,它在编译时定义符号DEBUG(可以换成其它,如-DLOCAL将定义符号LOCAL),这样,位于#ifdef DEBUG和#endif中间的语句会被编译。
而在通常情况下,这些语句将被编译器忽略(注意,不仅是不会执行,连编译都没有进行)。
本文介绍了在使用GCC编译器时的一些常见选项,包括如何指定输出文件名、启用警告、遵循ANSI标准以及链接数学库。通过示例展示了如何通过编译选项解决编译过程中的问题,例如-Wall选项用于显示警告,-ansi-pedantic选项用于严格遵循ANSI标准,-lm选项用于链接数学库,以及-DDEBUG用于在编译时定义预处理宏。
3624

被折叠的 条评论
为什么被折叠?



