ifndef与define与endif作用和用法.doc

ifndef与define与endif作用和用法.doc

ID:62033464

大小:26.00 KB

页数:7页

时间:2021-04-15

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

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

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

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

3、#include“myheader.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里面的#includ

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

6、-—------A。h 里#ifndef A_H#defineA_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. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。