㈠ #ifndef的用法
#ifndef是宏定義裡面的一種,用來防止防止頭文件的重復包含和編譯。
比如你有兩個C文件,這兩個C文件都include了同一個頭文件。而編譯時,這兩個C文件要一同編譯成一個可運行文件,於是問題來了,大量的聲明沖突。
如果把頭文件的內容都放在#ifndef和#endif中,不管你的頭文件會不會被多個文件引用,你都要加上這個,就可以避免沖突的問題。
#ifndef可以根據是否已經定義了一個變數來進行分支選擇,一般用於調試等等.實際上確切的說這應該是預處理功能中三種(宏定義,文件包含和條件編譯)中的一種——條件編譯。 C語言在對程序進行編譯時,會先根據預處理命令進行「預處理」。C語言編譯系統包括預處理,編譯和鏈接等部分。
(1)cpp編譯解決命名沖突問題擴展閱讀:
#ifndef一般格式是這樣的:
#ifndef <標識>
#define <標識>
......
#endif
<標識>在理論上來說可以是自由命名的,但每個頭文件的這個「標識」都應該是唯一的。標識的命名規則一般是頭文件名全大寫,前後加下劃線,並把文件名中的「.」也變成下劃線,如:stdio.h
#ifndef _STDIO_H_
#define _STDIO_H_
......
#endif