是什么意思#ifndef #define指令

Bet*_*ish 3 c c++ g++ directive

我是c ++的新手.当我创建头文件Arme.h时,我会自动获得这些指令

#ifndef DEF_ARME
#define DEF_ARME 
Run Code Online (Sandbox Code Playgroud)

这些是什么意思,重要的是什么?

Chr*_*aes 8

#ifndef 
Run Code Online (Sandbox Code Playgroud)

意思是:"如果没有定义"

#define DEF_ARME 
Run Code Online (Sandbox Code Playgroud)

为自己说话:这里定义了"空宏""DEF_ARME".我们可以在头文件中经常看到这种结构:你的整个头文件将包含在这些中:

#ifndef HEADER_NAME
#define HEADER_NAME

(here the code you want to include only once, as is general the case for headers)

#endif
Run Code Online (Sandbox Code Playgroud)

这样:第一次包含头文件时,宏"HEADER_NAME"尚未定义,因此将定义它并包含头代码.如果您稍后包含相同的标头,则HEADER_NAME已经定义,因此相同的代码将不再包含在其他时间.

注意:预处理程序指令

#ifndef
Run Code Online (Sandbox Code Playgroud)

是一个条件,(就像任何"if then"结构,需要结束,在这种情况下

#endif
Run Code Online (Sandbox Code Playgroud)