一、GCC编译选项
gcc [选项] [参数] 文件1 文件2 …
-
-o: 指定输出文件
如:gcc hello.c -o hello -
-E: 预编译,缺省输出到屏幕,用-o指定输出文件
如:gcc -E hello.c -o hello.i -
-S: 编译,将高级语言文件编译成汇编语言文件
如:gcc -S hello.c -
-c: 汇编,将汇编语言文件汇编成机器语言文件
如:gcc -c hello.s -
-Wall:产生全部警告
如:gcc -Wall wall.c -
-Werror:将警告作为错误处理
如:gcc -Werror werror.c -
-x: 指定源代码的语言
xxx.c - C语言
xxx.cpp - C++语言
xxx.for - Fortran语言
xxx.java - Java语言
…
gcc -x c++ cpp.c -lstdc++ -o cpp -
-O0/O1/O2/O3: 指定优化等级,O0不优化,缺省O1优化
二、预处理指令
#include - 将指定的文件内容插至此指令处
#define - 定义宏
#undef - 删除宏
#if - 如果
#ifdef - 如果宏已定义
#ifndef - 如果宏未定义
#else - 否则,与#if/#ifdef/#ifndef配合使用
#elif - 否则如果,与#if/#ifdef/#ifndef配合使用
#endif - 结束判定,与#if/#ifdef/#ifndef配合使用
#error - 产生错误,结束预处理
#warning - 产生警告,继续预处理
代码:error.c
#include <stdio.h>
#if (VER < 3)
#error "版本太低!"
#elif (VER > 3)
#warning "版本太高!"
#endif
int main(void) {
printf("版本:%d\n", VER);
return 0;
}
1、gcc error.c -o error -DVER=3 //预处理正常
2、gcc error.c -o error -DVER = 2 //产生错误,结束预处理
3、gcc error.c -o error -DVER=4 //产生警告,继续预处理
#line - 指定行号
代码:line.c
#include <stdio.h>
int main(void) {
int x = 1000;
printf("%d\n", __LINE__)