C++ #ifndef和#ifdef宏定义的使用及作用介绍

#ifndef和#ifdef都是一种宏定义判断,作用是防止多重定义。

#ifndef是if not define的简写,#ifdef是if define的简写。

       使用格式如下:

        #ifdef  标识符                          #ifndef  标识符

        程序段1                                       程序段1

        #else                                         #else

        程序段2                                       程序段2

        #endif                                      #endif

       一般的使用场景如下:

       1)、头文件中使用,防止头文件被多重调用

       2)、作为测试使用,省去注释代码的麻烦

       3)、作为不同角色或者场景的判断使用

       接下来对以上三种场景作举例说明:

1、头文件中使用。标识符的定义格式其实没有规定,最好全部是大写,为了好区分,最好以头文件名命名,然后加上下划线_,便于区分。

A.h

#ifndef _A
#define _A
#include "B.h"
class A
{
public:
	int a;
	B* objectb;
public:
	A();
	int geta();
	void handle();
	void hello();
};
#endif _A
这样,即使其他几个头文件中包含A.h,但是就只处理一次,第二次处理时,_A这个宏已经存在,将不会在执行循环里的程序。很好的防止了重复声明。
2、做测试用

B.cpp

#include 
#include "A.h"
#define INIT_B
using namespace std;
B::B()
{
	#ifdef INIT_B
	this->b=200;
	#endif
}
有时候当代码比较多的时候,要做测试,但是全部注释很麻烦,这时候使用#ifdef非常好用,如果我不想执行

this->b=200;这段程序,只需要将上面的#define INIT_B注释就可以了。

3、作为不同角色或者场景的判断使用

B.h

#include 
#include "A.h"
#define ADMIN
using namespace std;
B::B()
{
	#ifdef ADMIN
	this->b=200;
	#else
	this->b=25;
	#endif
}
如果是ADMIN管理员和不是管理员,所执行的代码不同。其实这段代码也可以使用(#if #else #endif),但是#if后面跟的是条件语句。

总结:#ifdef和#ifndef挺重要的,在头文件中最好都使用,防止代码出错。

有问题和建议希望留言提出或者发邮箱给我,虚心倾听学习! 邮箱:[email protected]

你可能感兴趣的:(C++,C)