ifndef与define与endif作用和用法

ifndef与define与endif作用和用法

ID:8819715

大小:45.50 KB

页数:7页

时间:2018-04-08

ifndef与define与endif作用和用法_第1页
ifndef与define与endif作用和用法_第2页
ifndef与define与endif作用和用法_第3页
ifndef与define与endif作用和用法_第4页
ifndef与define与endif作用和用法_第5页
资源描述:

《ifndef与define与endif作用和用法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、ifndef/define/endif作用和用法1.问题:ifndef/define/endif”主要目的是防止头文件的重复包含和编译,偶只知道这个概念不懂的是怎么个用法,和为什么要用它~~高手请指点一下~~谢谢~~~!!!--------------------------------------------------------------------------------------------------用法:.h文件,如下:#ifndefXX_H#defineXX_H...#endif这

2、样如果有两个地方都包含这个头文件,就不会出现两次包含的情况。。因为在第二次包含时XX_H已经有定义了,所以就不再include了--------------------------------------------------------------------------------------------------#ifndefGRAPHICS_H//防止graphics.h被重复引用#defineGRAPHICS_H#include//引用标准库的头文件…#include“m

3、yheader.h”//引用非标准库的头文件…voidFunction1(…);//全局函数声明…classBox//类结构声明{…};#endif--------------------------------------------------------------------------------------------------那是指你建立多个文件时,多个文件里都包含这个头文件--------------------------------------------------------

4、------------------------------------------给你举个例子,再顺便分析一下:假设你的工程里面有4个文件,分别是a.cpp,b.h,c.h,d.h。a.cpp的头部是:#include"b.h"#include"c.h"b.h和c.h的头部都是:#include"d.h"而d.h里面有classD的定义。这样一来,编译器编译a.cpp的时候,先根据#include"b.h"去编译b.h这个问题,再根据b.h里面的#include"d.h",去编译d.h的这个文件,这

5、样就把d.h里面的classD编译了;然后再根据a.cpp的第二句#include"c.h",去编译c.h,最终还是会找到的d.h里面的classD,但是classD之前已经编译过了,所以就会报重定义错误。加上ifndef/define/endif,就可以防止这种重定义错误。--------------------------------------------------------------------------------------------------A.h里#ifndefA_H#de

6、fineA_H...#endifB.h和C.h都include"A.h"D.h里include"B.h"include"C.h"在预编译的过程中,执行到include"C.h"时会因为在上一句的时候已经定义了A_H这个宏,所以此时的的的ifndef条件不满足,也就不会再一次包含A.h,起到了防止重复引用头文件的效果。----------------------------------------------------------------------------------------------

7、----1.比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:#ifndef<标识>#define<标识>............#endif<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中

8、的“.”也变成下划线,如:stdio.h#ifndef_STDIO_H_#define_STDIO_H_......#endif2.在#ifndef中定义变量出现的问题(一般不定义在#ifndef中)。#ifndefAAA#defineAAA...inti;...#endif里面有一个变量定义在vc中链接时就出现了i重复定义的错误,而在c中成功编译。原因:(1).当你第一个使用这个头的.cpp文件生成.obj的时候,inti在里面定义了当另外一个使用这个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。