c语言 ifdef用法,条件编译ifdef_ifndef_endif用法

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

前言

C语言中的预处理功能有三种,分别是宏定义,文件包含和条件编译,这里说的就是”条件编译”.

其实看名字就能看出来,满足一定条件才进行编译,是给编译器看的.

只要学过if else语句的人,就能很容易理解这个.

#ifdef

就是”if define”的意思,即”如果定义了”1

2

3

4

5#ifdef 标识符1

程序段1

#else

程序段2

#endif

如果定义过标识符1,那就执行程序段1,负责执行程序段2.也可以有如下用法:1

2

3#ifdef 标识符1

程序段1

#endif

#ifndef

“if not define”,如果没有定义过.1

2

3

4

5#ifndef 标识符1

程序段1

#else

程序段2

#endif

如果没有定义过标识符1,就执行程序段1,负责执行程序段2.也可以有如下用法:1

2

3#ifndef aaa

#define aaa a*a*a

#endif

#if1

2

3

4

5#if 表达式1

程序段1

#else

程序段2

#endif

作用&例子防止重复定义

当你在a.h中定义了一个”某变量”,然后在b.h中包含了a.h的头文件,接着在c.h中包含了a.h的头文件,最后你又在test.c中包含了a.h和c.h两个头文件.这样就相当于你在test.c中定义了两遍某变量啊,c语言是不允许重复定义的(声明是可以重复的),所以你得告诉编译器,我如果定义过某变量你就别再给我编译这句话了,如果没定义过,再编译.

举例

a.h1

2#include

#include "b.h"

b.h1#include "a.h"

c.c1

2

3

4

5#include "a.h"

#include "b.h"

int main(){

printf("Hello!");

}

这样在c.c中会编译错误,将b.h改为如下就可以解决这个问题.

b.h1

2

3

4#ifndef _A_H

#define _A_H

#include "a.h"

#endif

用于注释代码1

2

3

4

5

6

7

8

9

10

11

12

13#include

#define CONFIG_DEBUG

int main(){

FILE *fp;

fp=fopen("D:\DEV\test.txt","r");

if(NULL==fp){

printf("error!");

}

#ifdef CONFIG_DEBUG

printf("open test.txt ok");

#endif

return 0;

}

当不想让程序执行输出语句时,把#define CONFIG_DEBUG注释掉就行了.

PS:1

2

3

4#define

其实是

# define

只要有一个#就表示是预处理语句了!

参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值