问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于C语言中的#ifndef。。。endif 的用法,求高手详解

发布网友 发布时间:2022-05-13 21:00

我来回答

3个回答

热心网友 时间:2023-10-28 04:30

#ifndef #endif 相当于括号括起的一段东西。
如果没有定义那个宏,则执行 这段东西。
如果没有定义那个宏,则 跳过 这段东西。
---------------
上面那段东西,如果前面有:
#define 标识符1
上面那段东西 变成:
else
{
}
------------
上面那段东西,如果前面没有定义标识符1 ,上面那段东西 变成:
程序段 1
else
{
程序段 2
else if{
程序段3 }
else {
程序段3
}
}
--------------------
#ifndef _STDIO_H_
#define _STDIO_H_
......
#endif
用于避免重复包含 stdio.h 例如:
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
第一个 #include <stdio.h> 执行后 就有了 #define _STDIO_H_
遇到第2 个 #include <stdio.h> 它的第一行 有
#ifndef _STDIO_H_ 保护。 因为有了 #define _STDIO_H_ 不能通过,第二个 #include <stdio.h> 不会重复执行 。

热心网友 时间:2023-10-28 04:31

#ifndef假如没有定义,那么进行宏定义。 #endif结束宏定义。

这个是为了避免头文件重复包含而定义的,一般这个宏的定义方式为__头文件名__H_

比方说你#include进来一个stdio.h,再#include进来一个string.h。也许在string.h头文件里又include了stdio.h。这样你的程序中就include了两个stdio.h。定义了两个printf函数等等。
这就麻烦了,编译会出错不说,就算编译过了也是浪费资源
加了一个#ifndef _STDIO_H的话。在#include进来的string.h中如果再试图include一遍stdio.h的话,由于事先在第一个stdio.h中已经定义了_STDIO_H这个宏。所以不满足#ifndef _STDIO_H这个条件,就不会编译第二次了。
#define 后面不一定要加两个字符串。一个也行,加一个字符串如#define _STDIO_H , #define DEBUG 等等,一般在编译前用来做开关。控制编译部分。上面所说的头文件中是一个例子。再举一个查错的例子
#define DEBUG
...
...
#ifdef DEBUG
fprintf( stderr , "Debug Message\n " );
#endif
...

当你程序完成之后。可以把#define DEBUG一行用注释屏蔽掉。这样在编译的时候就不会把debug部分也编译进去了。

热心网友 时间:2023-10-28 04:31

其实这个是为了防止头文件 .h文件被重复的加入代码中 用了 #ifdef #endif 后 中间的代码只会被加入一次了
关于C语言中的#ifndef。。。endif 的用法,求高手详解

ifndef _STDIO_H_ 保护。 因为有了 #define _STDIO_H_ 不能通过,第二个 #include &lt;stdio.h&gt; 不会重复执行 。

c语言中的#ifndef,def,endif等宏是什么意思

1、这是条件编译的命令 ifndef def 语句1 else 语句2 endif 表示如果def在前面进行了宏定义那么就编译语句1(语句2不编译),否则编译语句2(语句1不编译)2、宏定义的格式如下:define 标识符 字符串 其中,#表示这是一条预处理命令;#define为宏定义命令;“标识符”为宏定义的宏名;“字符串...

ifndef define endif作用

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

【C/C++】ifndef/define/endif作用和用法

其基本用法如下:首先在头文件的开头添加一个`#ifndef`关键字,紧接着是文件名全大写,前后加上下划线,并用下划线替换点号。例如,文件名为`stdio.h`,则头文件开头应为`#ifndef STDIO_H`。接下来添加`#define STDIO_H`,这是定义标志,表明文件未被包含过。在文件内容之后,添加`#endif`关闭此定...

头文件中的 ifndef/define/endif 干什么用?

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

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

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

c语言中 #ifdef ... 和#endif 配套使用的方法 ?

比如头文件名为keyboard.h。通用的使用方法如下:ifndef _KEYBOARD_H define _KEYBOARD_H ……endif 通过这种方法,当第一次使用这个头文件的c文件,编译时,查看是否定义_KEYBOARD_H 第一次肯定没有,所以它就定义了头文件里面的相关宏以及变量。第二个使用这个头文件的C文件,编译时,一看_KEYBOARD_H...

#ifndef_#else_#endif是怎么执行的

ifndef AAA { int a;endif int b;int c;ifndef AAA } endif 如果预编译此代码之前出现过 define AAA 编译器这样编译:int b;int c;否则如果没有定义过AAA,即没出现过#define AAA,编译器这样编译:{ int a;int b;int c;} 具体是#define什么,自己随便啦。 记住预编译只看以#开头的那条,...

C语言当中的#ifdef DEBUG, #define ,#else,#endif等的意义

endif 它的功能是,如果标识符已被#define 命令定义过则对程序段1 进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else 可以没有,即可以写为:ifdef 标识符 程序段 endif 第二种形式:ifndef 标识符 程序段1 else 程序段2 endif 与第一种形式的区别是将“ifdef”改为...

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

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

ifndef和define的用法 ifdef和ifndef的区别 c语言中e的用法 ifndef的用法示例 ifndef和define sprintf函数用法详解 c语言getchar的用法 typedef的用法 c语言中~用法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
青岛湛山寺必须初一和十五去吗 青岛都有哪些免费的寺庙 为什么我男朋友在公众场合不愿我挎着他胳膊 怎么还别人的信用卡? 男生大部分不喜欢在公共场合和女朋友亲密?WHY? 如果注册香港公司,可否将公司的账号设在国内的外资银行? ...音译,谐音字也可以 ,很急很急,有知道的朋友麻烦告诉我,谢谢... ...标注成汉语拼音的那种,我想学这首歌,但是不会闽南语!! ...中文谐音音译歌词,不要罗马文的,我看不懂,麻烦了,... 旺达与巨像steam上多少钱能买一个:游戏价格查询 定义宏防止头文件重复包含问题 两个源文件都包含了同一个头文件,但是已经做了防止重复包含的处理,为啥还是冲突呢 c++ 防止头文件重复include问题 (C语言)定义宏 以防止重复包含此头文件 这句话是什么意思?? 信用分如何查询 头文件被重复包含有什么坏处?头文件被循环包含有什么坏处? 如何避免重复包含头文件,生产尽量不冲突的宏 “#ifndef #define #endif ”防止头文件被重复包含 C++中,如何防止一个头文件内容被重复包含? C语言头文件避免重复包含,pragma once和#ifndef的区别 在c/c++中如何避免头文件被多次包含? c语言如何避免重复包含头文件? 沈阳四台子中国石油加油站自助加油优惠多少 工行中国石油信用卡,可以在中石油加油站自助加油吗?是不是和加油充值卡功能一样的 有没有有人发现使用中石油的加油卡,在自助加油机上加油时,每次插入加油卡输入密码后都会少1元钱呢? 中国石油有自助加油机吗? 员工薪资调整要提前多久通知 谁能发给我一些有关人力资源类工作中需要用到的资料啊,列如人事考勤表、绩效考核表、员工工资调整表等 excel在调整前工资表中对工资统一调整所有员工基本工资上调100 多喝蜂蜜水好吗 爽感的四川话是什么意思 爽感是什么意思 “爽”的意思是什么? 爽的感觉是一种什么感觉? 爽是什么感觉 真爽是什么意思?什么感觉?? 人类因为什么而感到爽,爽的根源是什么? 她总是这样说:“太爽了!很爽的感觉。”她是什么意思呢? 爽的字义是什么 爽是什么感觉,为什么人会感到爽,做什么事情最爽? 鸡汤能下奶吗 鸡汤下奶吗? 喝鸡汤下奶吗 吃鸡肉鸡汤会下奶吗 我一受凉或者喝点凉的就拉肚子,怎么回事 产后喝鸡汤对下奶好不好 做月子喝鸡汤能下奶吗 喝鸡汤能下奶吗 母鸡汤是下奶的吗 如何巧妙的向女孩要?6个技巧让你成功收号