視覺(jué)lifeC++編程實(shí)戰(zhàn):入門(mén)基礎(chǔ) C++編程實(shí)戰(zhàn):進(jìn)階提升
一、基本結(jié)構(gòu)
從簡(jiǎn)單的多文件項(xiàng)目開(kāi)始吧!通常分為三部分:main.cpp
,aclass.cpp
,aclass.h
三個(gè)部分:
aclass.h
:函數(shù)原型
使用#define或const定義的符號(hào)常量
結(jié)構(gòu)體聲明
類聲明
模板聲明
內(nèi)聯(lián)函數(shù)
aclass.cpp
:包含與結(jié)構(gòu)體、模板、類相關(guān)的函數(shù)代碼main.cpp
:包含調(diào)用與結(jié)構(gòu)體、模板、類相關(guān)的函數(shù)代碼
二、“”
和<>
的區(qū)別
包含自定義的頭文件時(shí),用雙引號(hào)
“”
,編譯器首先查找當(dāng)前工作目錄或源代碼目錄;如果沒(méi)有找到,則將在標(biāo)準(zhǔn)位置查找。包含庫(kù)的頭文件時(shí),用尖括號(hào)
<>
,編譯器將查找存儲(chǔ)標(biāo)準(zhǔn)頭文件的主機(jī)系統(tǒng)的文件系統(tǒng)中查找。
三、頭文件使用ifndef
、define
、endif
的解釋
由于在不知情的原因下,有可能將頭文件包含多次,基于預(yù)處理器編譯指令#ifndef
(即if not define
)可以避免這種情況 。
#ifndef ACLASS_H_...#endif
上面這段代碼意味著僅當(dāng)之前沒(méi)有使用預(yù)處理器編譯指令#define
定義名稱ACLASS_H_
時(shí),才處理#ifndef
和#endif
之間的語(yǔ)句。
編譯器首次遇到該文件時(shí),名稱ACLASS_H_
沒(méi)有定義(該名稱根據(jù)頭文件的名字取得,并加上一些下劃線,使其在其他地方不太可能被定義),在這種情況下,編譯器將查看#ifndef
和#endif
之間的內(nèi)容;如果在同一個(gè)文件中遇到其他包含aclass.h
的內(nèi)容,編譯器就知道ACLASS_H_
已經(jīng)被定義了,從而跳到#endif
后面的一行上。
?
標(biāo)簽: