![](/img/trans.png)
[英]C++ #ifndef for include files, why is all caps used for the header file?
[英]Why are #ifndef and #define used in C++ header files?
我一直在頭文件的開頭看到這樣的代碼:
#ifndef HEADERFILE_H
#define HEADERFILE_H
並在文件的最后是
#endif
這樣做的目的是什么?
這些被稱為#include警衛 。
包含標頭后,它會檢查是否定義了唯一值(在本例中為HEADERFILE_H
)。 然后,如果未定義,則定義它並繼續到頁面的其余部分。
當再次包含代碼時,第一個ifndef
失敗,導致空白文件。
這可以防止雙重聲明任何標識符,例如類型,枚舉和靜態變量。
#ifndef <token>
/* code */
#else
/* code to include if the token is defined */
#endif
#ifndef
檢查給定標記在文件或包含文件中是否已經#defined
; 如果沒有,它包括它與結束#else
之間的代碼,或者,如果沒有#else
,則包括#endif
語句。 #ifndef
通常用於通過在包含文件后定義令牌並檢查令牌未設置在該文件的頂部來使頭文件具有冪等性。
#ifndef _INCL_GUARD
#define _INCL_GUARD
#endif
這可以防止多次包含相同的頭文件。
#ifndef __COMMON_H__
#define __COMMON_H__
//header file content
#endif
假設您已將此頭文件包含在多個文件中。 因此,第一次沒有定義__COMMON_H__時,它將被定義並包含頭文件。
下次定義__COMMON_H__時,它將不再包含。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.