c++ #ifndef,ifndef和#define,#endif?有何用

希望大家给我一个详细点的解释,或者解释得清楚点。

避免头文件中的内容多次出现,到底属于什么情况。

为什么要避免?

比如说,两个文件,都包含了 IOSTREAM
然后,两个文件合并起来,成为一个,是否就要使用上面的 #ifndef

他究竟是用一个什么原理来实现这个操作的?

这是预处理命令
#ifndef _HEAD_H //就是如果没有定义宏_HEAD_H
#define _HEAD_H //那么就定义宏_HEAD_H

//添加你的头文件内容

#endif //结束if

还有类似的#ifdef #undefine可以从字面意思理解。

加上以上的宏是未了防止头文件被重复引用,当编译器第一次编译头文件的时候,会定义_HEAD_H,然后如果还有文件引用了该头文件,但_HEAD_H已经被定义了,所以就不会在去编译你的头文件添加的内容。

这个就是条件编译
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-09
宏命令,他们类似条件语句。

#ifndef -- 如果没有定义什么东西
#define -- 则定义某东西
#endif -- 宏 条件语句结束符号

宏 条件语句 在程序编译的第一阶段执行。执行完,再编译C,C++程序部分。

c++ #ifndef,ifndef和#define,#endif?有何用
这是预处理命令 ifndef _HEAD_H \/\/就是如果没有定义宏_HEAD_H define _HEAD_H \/\/那么就定义宏_HEAD_H \/\/添加你的头文件内容 endif \/\/结束if 还有类似的#ifdef #undefine可以从字面意思理解。加上以上的宏是未了防止头文件被重复引用,当编译器第一次编译头文件的时候,会定义_HEAD_H,...

c++ #ifndef,ifndef和#define,#endif?有何用
这是预处理命令 ifndef _HEAD_H \/\/就是如果没有定义宏_HEAD_H define _HEAD_H \/\/那么就定义宏_HEAD_H \/\/添加你的头文件内容 endif \/\/结束if 还有类似的#ifdef undefine可以从字面意思理解。加上以上的宏是未了防止头文件被重复引用,当编译器第一次编译头文件的时候,会定义_HEAD_H,然后如果...

ifndef define endif作用
ifndef、#define、#endif为C语言的3条预处理语句,主要用作条件编译。先介绍一下条件编译:一般情况下,源代码文件中的所有行都参加编译,但有时需要指定一部分代码在某个条件下才被编译,这就叫做条件编译。条件编译发生在预处理阶段,在C中,主要通过#if、#elif、#else、#ifdef、#ifndef、#end...

【C\/C++】ifndef\/define\/endif作用和用法
ifndef\/define\/endif机制是C\/C++编程中防止头文件重复包含的关键。在项目中,特别是在大型或复杂的项目中,多个源文件可能会引用相同的头文件。若未使用此机制,同一头文件内容会被多次编译,导致重复定义错误。其基本用法如下:首先在头文件的开头添加一个`#ifndef`关键字,紧接着是文件名全大写,前后加...

C++ 中的 #if 、#ifndef 和 #ifdef
ifndef 和 #ifdef 是 C++ 中的预处理器指令,用于防止代码的重复定义,确保程序的稳定性。当需要在代码中设置判断条件时,使用 #ifdef 和 #ifndef 来实现。#ifdef 指令会在宏定义已被定义时执行对应的代码段,#ifndef 则在宏未定义时执行。具体使用格式如下:#ifdef 标志符 或 #ifndef 标志符,其中...

C++#ifndef与#ifdef的区别是什么?
一、使用场景不同:ifndef使用场景为:1、头文件中使用,防止头文件被多重调用。2、作为测试使用,省去注释代码的麻烦。3、作为不同角色或者场景的判断使用。ifdef使用场景:判断某个宏是否被定义,若已定义,执行随后的语句。二、含义不同:ifndef表示ifnotdefine。ifdef表示ifdefine。

C++中if、#if与#ifdef、#ifndef彼此的区别
if是条件语句,在运行的过程中根据条件的值选择执行不同的语句。#if是条件编译语句,在编译阶段执行,如果后面跟的条件成立,就编译对应的语句。#ifdef是条件编译语句,在编译阶段执行,后面跟一个宏的名称,如果这个宏已经定义了,就编译对应的语句。#ifndef是条件编译语句,在编译阶段执行,后面跟一个宏...

ifndef和define是干嘛用的
ifndef是ifnotdefine的简写,是宏定义的一种,实际上确切的说,这应该是预处理功能三种(宏定义、文件包含、条件编译)中的一种---条件编译。在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。“define”为宏定义命令。被定义为“宏”的标识符称为“宏名”。在编译预处理时,...

c++ 头文件中加入 #ifnodef #define #engif 有什么用
ifdef、#ifndef、#endif:一般#ifdef\/#ifndef和#endif是成对出现的。ifdef顾名思义,就是如果定义了某个宏。比如 ifdef age \/\/如果之前有#define age value(这个是age对应的值),就执行下面的语句 \/\/do something endif \/\/执行语句到这里结束 ifndef与#ifdef正相反,直译是if not define,就...

头文件中的 ifndef\/define\/endif 干什么用?
ifndef、#define、#endif为C语言的3条预处理语句,主要用作条件编译。先介绍一下条件编译:一般情况下,源代码文件中的所有行都参加编译,但有时需要指定一部分代码在某个条件下才被编译,这就叫做条件编译。条件编译发生在预处理阶段,在C中,主要通过#if、#elif、#else、#ifdef、#ifndef、#endif来...

相似回答