1. 程式人生 > >面試題5:標頭檔案中的ifndef/define/endif有什麼作用?

面試題5:標頭檔案中的ifndef/define/endif有什麼作用?

在一個大的軟體工程裡面,可能會有多個檔案同時包含一個頭檔案,當這些檔案編譯連結成一個可執行檔案時,就會出現大量重定義的錯誤。在標頭檔案中實用#ifndef #define #endif能避免標頭檔案的重定義。
方法:例如要編寫標頭檔案test.h
在標頭檔案開頭寫上兩行:
#ifndef _TEST_H
#define _TEST_H//一般是檔名的大寫
標頭檔案結尾寫上一行:#endif這樣一個工程檔案裡同時包含兩個test.h時,就不會出現重定義的錯誤了。
分析:當第一次包含test.h時,由於沒有定義_TEST_H,條件為真,這樣就會包含(執行)#ifndef _TEST_H和#endif之間的程式碼,當第二次包含test.h時前面一次已經定義了_TEST_H,條件為假,#ifndef _TEST_H和#endif之間的程式碼也就不會再次被包含,這樣就避免了重定義了。主要用於防止重複定義巨集和重複包含標頭檔案

ifndef/define/endif 的含義:如果未定義 / 那麼定義 / 完成假設

一般是用來防止標頭檔案被重複包含,提高編譯效率的。]

這是C++預編譯標頭檔案保護符,保證即使檔案被多次包含,標頭檔案也只定義一次。