作者UNARYvvv (有趣生活)
看板C_and_CPP
标题Re: [问题] 请问有关header档的基本问题
时间Tue Feb 7 14:04:59 2006
※ 引述《DreamZero (寻梦者)》之铭言:
: ※ 引述《seamanku (SEAMAN)》之铭言:
: : 谢谢你 ^^
: : 不过我想知道为什麽要这样写,
: : 因为好像没有加这三行宣告也是可以执行的?
: 因为有时候一个专案会有很多原始码档案
: 但是可能同时有两个档案 include 同一个 header
: 如果程式中同一个函数的 prototype 出现两次会造成冲突
不是这样
两个以上 source file 有 include 同一个 header file
是常见的情况
因为每个要使用到特定函式的 source
本来就都要包含同一个函式的 prototype
整个程式中只能有一份的,是函式定义(definition)
这边要解决的问题是
同一个 source 内,include 了某个 header 两次以上的情况
例如
windows.h 里面假如有一行
#include <winerror.h>
而 winerror.h 里面定义了一堆错误代码常数
那如果我不知道我只要去 include windows.h,就有包含 winerror.h 这件事的话
而在某个 .c 档案写了
#include <windows.h>
#include <winerror.h>
如果没有类似上面那种编译条件判断
那 winerror.h 里面所定义的常数在同一个 source 就会出现两份
编译就会发生重复定义的错误
反之则可以运作
类似的例子,可以想想 C++ 的 fstream header 可以单独使用
但却也可以再加 iostream header 来用
: 所以藉由判断是否定义过来决定是否引用
: 大概是这样吧
: 如果有误烦请各位高手指正 = ="
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.129.20.14
※ 编辑: UNARYvvv 来自: 140.129.20.14 (02/07 14:14)
1F:→ DreamZero:果然记错了 orz 02/08 01:08
2F:推 drkkimo:嗯 这个问与答对初学者是蛮好的范例 02/08 10:02