C学习笔记之(条件编译)

摘要:条件编译指令允许我们根据条件来编译源代码中不同的部分。

一:常见的条件编译指令:#if、#else、#elif、#endif、#ifdef和#ifndef

常见格式如下:#if 常量表达式

                         代码语句;

                        #elseif 常量表达式

                         代码语句

                         #endif

#include <stdio.h>
#include <stdlib.h>
#define M(a,s) (a+4)*((b/4)
#define N 3
int main()
{   int a =20;
    #if((N)>10)
    printf("N>2被打印第一次\n");
    printf("N>2被打印第二次\n");
    #elif N>2
    printf("N>2被打印第一次\n");
    printf("N>2被打印第二次\n");
    #endif
    printf("退出条件编译打印第一次!\n");
    if (a=20)
        printf("a=20被打印第一次\n");
    return 0;
}

直接在编译器中更明显,如果不符合编译条件,那么编译器直接将,其后面的代码置灰色。表明将不会编译这段代码!

 有几点比较需要注意:

1:我在写代码时发现:如果条件编译指令 和{并行的话,编译器将会报错。暂时不知道原因,希望有大佬指点一下。

2:#if 后可以时任意形式的常量表达式,需要根据需要看是否需要加上(),非强制要求,但是为了防止出错,加上()也是个非常好的习惯。与代码段的if后必须加上()要区别起来。

3:每一个#if都必须有一个#endif与之对应。而elif则不需要。

4:条件编译,如#if 常量表达式

                           语句一;

                           语句二;

                           语句三;

           #endif、#elif ,等。。。#if后的所有语句都被视为一个整体,直到遇到 #endif、#elif

才结束。                

                     #if (常量表达式)

                {

                           语句一;

                           语句二;

                           语句三;

                 }

加上{}也是一个好习惯。

二:#ifndef #define #endif的两种用法

1:定义头文件

#ifndef __reg51H__
#define __reg51H__

typedef  int u16;

void fun1(int a);

int b =10;

}

这里需要注意的是:

(1)__reg51H__必须是合法的标识符,如果写成52_h,因为是字母开头就不是合法的标识符,编译阶段就会出错。

(2)实际写代码中发现,一个头文件,或者.c文件中只能使用上面的格式一次,重复在同一代码中再次定义一个头文件,就会出错。

(是代码写的问题,这一段是错误的描述)

如下图

 

2:简单用法,

#ifndef MAX
#define MAX 100

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值