黑马程序员_C语言之预处理指令

预处理指令:

   ------ IOS培训、android培训、期待与您交流!-------

               在代码翻译成0和1之前;

           所有的预处理指令都是以#开头的;

           预处理的位置是随便写的;

           预处理指令的作用域:从编写指令的那一行开始,一直到文件结尾;

           怎么将预处理指令的作用域只是程序的一部分:在作用域的结尾处加 #undef COUNT;

       1、  宏定义1(不带参数)

                               /* 所有的预处理指令都是以#开头*/

                              #include<stdio.h>

                             #define  COUNT 6 //格式:#define 宏名 值;

                              //宏名一般写大写或者以k开头,是为了与变量区别

                              Int main()

                             {

                            //如果不加#define COUNT 6,数组中的元素个数不能用变量表示,故会报错;

                            //需要在开头加上#define

                            Intages[COUNT]={1,2,67,89,90};

 

                             //用双引号括住的宏不会被替换掉

                           Char*name=”COUNT”;

                           Printf(“%s\n”,name);//输出结果是COUNT

                           For(int i=0;i<COUNT;i++){

                           Printf(“%d\n”,ages[i]) ;

                              }

                        #undef COUNT  //COUNT的作用域到这里结束

                        Int a=COUNT;

                        return 0;

                            }

2、  宏定义2(带参数)//带参数的宏定义比函数效率高

                Int sum(int a,int b)

                {

                       return a+b;

                }

               Int main()

              {

                    Int a=10;

                    Int b=20;

                    //这样就可以实现函数的调用,完成了加法运算

                   Int c=sum(a,b);

                   return 0;

              }

              //但是也可以不用函数完成加法运算,即用带参数的宏来实现加法运算

              //格式:#define sum(v1,v2) v1+v2

              #include<stdio.h>

              #define sum(v1,v2)  (v1+v2)

             Int main()

             {

                   //宏定义会在翻译成0和1之前将左边的换成右边的;

                  //宏定义只负责换代码,不负责计算

                    int d=sum(2,3)*sum(6,4)//实际上完成的是int d=2+3*6+4;

                   //这时候将宏定义换成 #define sum(v1+v2)  (v1+v2);

                  //即带参数的宏定义一定要在参数和结果值上都得加小括号

                 Int a=10;int b=20;

                 Int c=sum(a,b);

                 printf(“c is %d\n”,c);

                 reurn0;

              }

3、 条件编译

                基本用法: #if 条件1

                                    …code1…

                               #elif  条件2

                                    …code2…

                               #else

                                    …code3…

                               #endif

                实例:

                      #include<stdio.h>

                      Int main()

                     {

                          int a=10;

                         //这个时候不能访问a,因为程序还没有翻译;

                        //在条件编译中一般判断宏的值,所以需要在程序中定义一个宏

                          #if (a==10)

                             printf(“a是10\n”);

                         #elif(a==5)

                              printf(“a是5\n”);

                        #else

                              printf(“a是其他值”);

                        #endif

                            return0;

                 }

                       修改程序如下:

                   #include<stdio.h>

                  #define A 10

                  Int main()

                 {

                         #if(A==10)

                         Printf(“a is 10\n”);

                        #else printf(“a is not 10\n”);

                        #endif

                        return 0;

                   }

 

 

                 #ifdef和#ifndef的使用

               基本语法:

                //如果定义了宏MAX就执行code

                 #ifdef  MAX

                         …code…

                #endif

                //如果没有定义宏MAX就执行code

                #ifndef  MAX

               …code…

               #endif

4、文件包含

  需要事先写一个.h文件

  在.c文件中引用.h文件

 

             //<>是系统自带的文件,“”表示自定义的文件

                //不允许循环包含,比如a.h包含b.h,b.h又包含a.h

           //重复包含一个头文件会降低程序的效率

            #include”lisi.h”

             int main()

            {

                   int c=sum(10,19);

                  printf(“cis %d\n”,c);

                 return0;

             }

但是在.h文件中需要将.c文件中定义的宏#ifdef  … #endif


  ------ IOS培训、android培训、期待与您交流!-------


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值