在寫小demo的時候,注意到vs中會自動生成#program once;看別人寫的代碼的時候見到比較多的反而是#ifndef---#define---#endif;從字面上看兩種方式會產生相同的效果:避免同一個文件重復包含多次,但知道兩種方式的本質還是有必要的。
#program once:“同一個文件”指存儲在相同位置的文件,即物理位置下相同;當編譯器意識到文件存儲位置向同事便會跳過“副本文件”,僅僅編譯一次該物理位置的文件;但如果發生拷貝情況,便會出現重復包含的情況。
#ifndef--#define---#endif:#ifndef和#define后面是宏定義,這里的宏定義的作用僅僅是為了判斷文件是否是同一個文件,即宏名便是我們判斷是否是同一個文件的標注,因此,可以按照自己的習慣或者喜好來命名,和頭文件名字沒有必然聯系;但如果有多個頭文件,出現同名的幾率會大大增加,誤判的幾率也會提高很多;
#program once較#ifndef出現的晚,部分編譯器並不支持這種寫法,因此兼容性會較#ifndef差一些,但性能會好一些;
(目前,上文提到的文件,我認為應該僅僅只是頭文件)