#ifndef_code_#endif简析

首先做一下区分

#ifdef _DEFINE_
code1
#else
code2
#endif

#ifndef _NOT_DEFINE_
#define _NOT_DEFINE_
code
#endif

这两段代码的意义是不同的,作用也是稍有差异!
1. 第一种代码段的意义简介

一般情况下的话,源代码中的所有都是参加编译的。有些时候程序猿们想只对其中的一部分当满足某种条件是才编译,于是

#ifdef 标识符 
code1 
#else 
code2 
#endif

便应运而生,也就是“条件编译”。它的作用是:当标识符已经被定义过(一般也是用#define命令定义的),则对code1进行编译,否则编译code2。
其中#else部分也可以没有,但使用情景相同即:

#ifdef
code1
#endif
  1. 第二种代码的意义简介
    在头文件中使用#ifndef是非常重要的,主要是防止双重定义的错误。如果在头文件中a.h种定义了一个类a:
class a
{
};

如果两次#include “a.h”就会出错,因为相同的类不能定义两次。运用#ifndef就可以解决此类问题。

#ifndef _A_
#define _A_
class a
{
};
#endif

因为当你已经包含过这个文件,标识符就会有了定义,那么#ifndef的条件为假,就不会再执行后面的类定义了。(#ifndef和#endif必须成对出现)
还有一点需要清除的是:

#ifndef <标识>
#define <标识>
...
#endif

这里的<标识>在理论上来说是自由命名的,但是每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线。例如stdio.h->_STDIO_H_

  1. 程序猿在调试中使用
    一般程序在调试期间会写很多调试代码,而这些代码在加氟阶段是不需要的,由于调试代码多而杂,分布有时连写它的程序猿都不能查找全面。
#define _DEBUG_
#ifdef _DUGBU_
code
#endif

运用这段代码就可以解决这一劳民伤财的问题。具体我就不多说了!大家可以自行领悟!

做一下笔记,以备忘!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值