预处理 通过CPP程序 通过gcc -E xxx.c 获取预处理后的文件
编译 gcc 通过gcc -S xxx.c 获取汇编程序代码 xxx.s
汇编 gas 通过gcc -c xxx.c 获取xxx.o文件
连接 ld gcc 会的.out可执行程序
可以通过 命令 ldd 来获取可执行程序所关联的库文件。
#define add(A,B) ((A) + (B))
宏定义里的所有变量都要加上括号,要不然容易出错。
#define food(A,B) do{ xxxxxx}while(0) 最后不要加分号
这样些do{}while(0)的目的是防止多分号的问题。
typeof 的到那个变量的类型
#define foo(A,B) ({ xxx \
xxx \
xxx })
返回最后一个表达式的值
在头文件中,为了保证不被重复包含xxx.h
#ifndef _XXX_H_
#define _XXX_H_
XXXXXXXXXXX
#endif /*_XXX_H_*/
注释代码段
#if 0
#else
#endif
#if SYSTEN == win
#elif SYSTEN == unix
#ENDIF
STRINGA ## STRINGB 连接STRINGA和STRINGB
#将输入的表达式作为输出的一部分:
#define printd(export) printf(#export " = %f \n ",export)
printd(x/y); 展开为: printf("x/y = %f \n",x/y);
#if !defined(HDR)
#define HDR
xxxx
#endif
例题:定义宏swap(t,x,y),交换t类型的两个参数
#define swap(t,x,y) { t = _z; \
_x = _y; \
_y = _z ; }
阅读(1493) | 评论(0) | 转发(0) |