爲何在C ++頭文件中使用#ifndef和#define?

我一直在頭文件的開頭看到這樣的代碼: spa

#ifndef HEADERFILE_H
#define HEADERFILE_H

並在文件的最後是 code

#endif

這樣作的目的是什麼? token


#1樓

這些被稱爲#include警衛get

包含標頭後,它會檢查是否認義了惟一值(在本例中爲HEADERFILE_H )。 而後,若是未定義,則定義它並繼續到頁面的其他部分。 io

當再次包含代碼時,第一個ifndef失敗,致使空白文件。 變量

這能夠防止雙重聲明任何標識符,例如類型,枚舉和靜態變量。 file


#2樓

#ifndef <token>
/* code */
#else
/* code to include if the token is defined */
#endif

#ifndef檢查給定標記在文件或包含文件中是否已經#defined ; 若是沒有,它包括它與結束#else之間的代碼,或者,若是沒有#else ,則包括#endif語句。 #ifndef一般用於經過在包含文件後定義令牌並檢查令牌未設置在該文件的頂部來使頭文件具備冪等性。 bug

#ifndef _INCL_GUARD
#define _INCL_GUARD
#endif

#3樓

這能夠防止屢次包含相同的頭文件。 di

#ifndef __COMMON_H__
#define __COMMON_H__
//header file content
#endif

假設您已將此頭文件包含在多個文件中。 所以,第一次沒有定義__COMMON_H__時,它將被定義幷包含頭文件。 文件

下次定義__COMMON_H__時,它將再也不包含。

相關文章
相關標籤/搜索