刘小汶

路漫漫其修远兮,吾将上下而求索。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
预处理指令
  1. 翻译成0跟1之前执行的指令;有宏定义;条件编译;文件包含(就是include)
  2. 预处理指令在什么时候执行:在代码翻译成0和1之前执行;
  3. 预处理指令的位置是随便写的;但是是有作用域的;从编写指令的那一行代码开始,一直到文件结尾;

1.宏定义可以带参数也可以不带参数;

不带参数

  1. #define是宏定义的开头;所有的预处理指令都是以#开头;
  2. 宏定义的格式:#define 宏名 值;宏名一般写大写或者以K开头;变量名一般写小写;
  3. #define COUNT 6
  4. 表示在编译之前对代码全部过一遍;在双引号里面的COUNT不会被替换;
  5. #undef COUNT表示对COUNT取消,那么开始就失效,下面无法使用;
  6. .

带参数的宏名;

  1. #define sum(v1,v2) v1+v2
  2. 可以直接调用int c = sum(a,b);宏的作用就是把左边的东西转成右边的东西;
  3. 即int c= sum(a,b) =a+b;int c = sum(2,3)*sum(6,4)如果不加括号结果是24,因为int c = sum(2,3)*sum(6,4)=2+3*6+4=24;正确写法:int c =( sum(2,3))*(sum(6,4))
  4. 只做替换工作,不做运算;
  5. 一般是每个参数都有括号;而且结果值也要加上括号;
  6. #define pingfang(a) ((a)*(a))
  7. 带参数的宏定义,参数和结果值都要加小括号;
条件编译
  1. #if
  2. 条件编译,一般是判断宏的值;
  3. #define A 5    #if(A == 10) printf("");#elif(A=5) printf("");#else printf('");#endif return 0;
  4. #endif一定要写;这个作用是表示后面的代码和条件编译没有关系;表示条件编译结束;
文件包含
  1. <>表示系统自带的文件;“”表示自定义的文件;
  2. 不能循环包含;不允许你包含我,我包含你;
  3. 函数的定义不可以写多次;但函数的声明可以多次写;程序不会报错;
  4. #ifndef ABC         #define ABC 54354   int sum(int a,int b);         #endif
  5. 最好以文件名为宏名;
  6. 一个文件有一个宏名;可以保证每一个头文件不被执行多次;

posted on 2016-04-08 12:44  williamliuwen  阅读(1990)  评论(0)    收藏  举报