预处理指令

预处理指令

一.文件包含:     #include <>     复制代码        

     是C语言中的一个预处理指令:把一个文件的内容拷贝到这行命令所在的位置.

二.宏定义:    替换代码的预处理指令(在编译之前)

     在编译之前进行代码替换.

     当需要一些重复性代码或简单的函数运算.

 
 
  1. #include <stdio.h>
  2. #define KLength 6
  3. int main(){
  4.    printf("%d\n",KLength);     //运行结果:6
  5.    printf("%d\n",KLength+10);  //运行结果:16
  6. #undef KLength  //结束替换
  7.    int KLength=20;
  8.    printf("%d\n",KLength+10);  //运行结果:30
  9.    return 0;
  10. }

特点:

     1.命名尽量以大写或小写K开头,便于区分(规范);

     2.被双引号引起来的不会被替换.

     3.宏定义只会做代码替换,不会关注任何逻辑,容易出现优先级错误(加括号解决).

 
 
  1. #include <stdio.h>
  2. #define KAdd(a,b) a+b                  //不加括号是不正确的
  3. //#define KAdd(a,b) (a)+(b)            //正确
  4. int main(){
  5.    int a=KAdd(3,4)/KAdd(3, 2);        //运行结果:6   运行原理:3+4/3+2
  6.    printf("%d\n",a);
  7.       return 0;
  8. }

      4.替换可以设置作用域,如果不设置,作用域则是这行代码出现到代码的最后一行.

三.条件编译:    满足条件才编译,提高编译效率

普通用法:

 
 
  1. #include <stdio.h>
  2. #define KA 5
  3. int main(){
  4. #if (KA==5)
  5.    printf("KA==5\n");
  6. #elif(KA==3)
  7.    printf("KA==3\n");
  8. #else
  9.    printf("else==\n");
  10. #endif      //结束条件编译    只对离其最近的一个#if起作用
  11.       return 0;
  12. }

与宏定义相关的用法

 
 
  1. #include <stdio.h>
  2. #define KA 5
  3. int main(){
  4. #ifdef KA
  5.    printf("ifdef KA==\n");  //定义KA宏定义执行  //运行结果:ifdef KA==
  6. #endif
  7. #ifndef KA
  8.    printf("ifndef KA==\n"); //未定义KA宏定义执行
  9. #endif
  10.    return 0;
  11. }

特点:1.条件编译不能访问需要编译后才能执行的代码

 
 
  1. #include <stdio.h>
  2. #define KA 5
  3. int b=3;                   //无论b的值如何变,结果不变
  4. int main(){
  5.    int a=5;               //无论a怎么变,结果都是不变的
  6. #if(a==0||b==0)
  7.    printf("a==0\n");      //运行结果:a=0
  8. #else
  9.    printf("其他\n");
  10. #endif
  11. }

       2.条件编译不需要用大括号,所以必须加上结束标示,否则涵盖下面的所有代码.

       3.条件编译一般跟宏定义配合使用,防止重复包含及交叉包含.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值