揚(yáng)州市建設(shè)局網(wǎng)站網(wǎng)站點(diǎn)擊量 哪里查詢(xún)
一、頭文件包含順序
根據(jù)《Google C++ 編程風(fēng)格指南》,對(duì)于Foo.cpp,順序推薦為:
- Foo.h
- C標(biāo)準(zhǔn)庫(kù)
- C++標(biāo)準(zhǔn)庫(kù)
- 其它庫(kù)的頭文件
- 本工程的頭文件
?另外,在包含頭文件時(shí)應(yīng)該加上頭文件所在工程的文件夾名,可區(qū)分重名文件。即假如你有這樣一個(gè)工程base,里面有一個(gè)logging.h,那么外部包含這個(gè)頭文件應(yīng)該這樣寫(xiě):#include "base/logging.h",而不是#include "logging.h"。
二、防止頭文件被重復(fù)包含
1. Include Guards(預(yù)處理器宏):這是防止頭文件重復(fù)包含最常見(jiàn)的方法之一。在頭文件的開(kāi)頭和結(jié)尾使用預(yù)處理器宏,如下所示:
#ifndef MY_HEADER_FILE_H
#define MY_HEADER_FILE_H// 頭文件內(nèi)容#endif // MY_HEADER_FILE_H
當(dāng)頭文件第一次被包含時(shí),`MY_HEADER_FILE_H` 宏會(huì)被定義,頭文件的內(nèi)容會(huì)被包含。當(dāng)頭文件再次被包含時(shí),由于宏已經(jīng)被定義,頭文件的內(nèi)容將被忽略。
2. Pragma Once:使用 `#pragma once` 也可以達(dá)到相同的效果,它是一種更現(xiàn)代的方法。在頭文件的開(kāi)頭加入 `#pragma once`:
?#pragma once
`#pragma once` 指令告訴編譯器只包含一次該頭文件,不需要顯式的宏定義和條件判斷。
待續(xù)...