#ifndef是一條預編譯指令,就是說實在編譯的時候就會運行的指令。這個指令的作用很簡單,就是字面意思,如果沒有定義的話,但是卻經常使用。
因為使用這個可以避免一個源文件中兩次兩次包含同一個文件,或者一個工程文件中重復定義等問題。
為了避免頭文件被重復include,我們在頭文件前面加上判斷的語句來解決這個問題。
一般格式為
#ifndef <標識>
#define <標識>
……
#endif
這里的標識可以隨意命名,但是應該是不重復的,工程上我們遵循以下命名規則:將頭文件的文件名全部大寫,前后加上下劃線,然后將文件名中的.也變成下劃線比如對于頭文件stdio.h,為了防止重復定義,我們應該加上以下語句:
#ifndef _STDIO_H_
#define _STDIO_H_
……
#endif
當然,你也可以在里面加上其他語句,但是一般不能在里面定義變量,會出現錯誤。(錯誤原因比較玄學,可以不去了解)
如果要定義變量的話可以在前面加上extern。
參考文章:傳送門