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

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ifndef与define与endif作用和用法.

ifndef/define/endif作用和用法 1.问题:ifndef/define/endif”主要目的是防止头文件的重复包含和编译,偶只知道这个概念不懂的是怎么个用法,和为什么要用它~~高手请指点一下~~谢谢~~~!!! -------------------------------------------------------------------------------------------------- 用法: .h文件,如下: #ifndef XX_H #define XX_H ... #endif 这样如果有两个地方都包含这个头文件,就不会出现两次包含的情况 。。 因为在第二次包含时 XX_H 已经有定义了,所以就不再 include了 -------------------------------------------------------------------------------------------------- #ifndef GRAPHICS_H // 防止graphics.h被重复引用 #define GRAPHICS_H #include math.h // 引用标准库的头文件 … #include “myheader.h” // 引用非标准库的头文件 … void Function1(…); // 全局函数声明 … class Box // 类结构声明 { … }; #endif -------------------------------------------------------------------------------------------------- 那是指你建立多个文件时,多个文件里都包含这个头文件 -------------------------------------------------------------------------------------------------- 给你举个例子,再顺便分析一下: 假设你的工程里面有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里面有class D的定义。 这样一来, 编译器编译a.cpp的时候,先根据#include b.h 去编译b.h这个问题,再根据b.h里面的#include d.h ,去编译d.h的这个文件,这样就把d.h里面的class D编译了; 然后再根据a.cpp的第二句#include c.h ,去编译c.h,最终还是会找到的d.h里面的class D,但是class D之前已经编译过了,所以就会报重定义错误。 加上ifndef/define/endif,就可以防止这种重定义错误。 -------------------------------------------------------------------------------------------------- A.h 里 #ifndef A_H #define A_H ... #endif B.h 和 C.h都include A.h D.h里 include B.h include C.h 在预编译的过程中,执行到include C.h 时会因为在上一句的时候已经定义了A_H这个宏,所以此时的的 的ifndef条件不满足,也就不会再一次包含A.h,起到了防止重复引用头文件的效果。 -------------------------------------------------------------------------------------------------- 1.比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。 不管你的头文件会不会被多个文件引用,你都要加上这个。 一般格式是这样的: #ifndef 标识 #define 标识 ...... ...... #endif 标识 在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h #ifndef _STDIO_H_ #define _STDIO_H_ ...... #endif 2.在#ifndef中定义变量出现的问题(一般不定义在#ifndef中)。 #ifndef AAA

文档评论(0)

kaiss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档