C語言中的頭文件只是簡單的複製粘貼。
C語言中變量、函數、結構體的定義和聲明兩個過程是分離的。聲明一般放在頭文件中,爲了防止重複聲明,須要保證頭文件中的內容在構建obj文件時只被包含一次。這能夠經過#ifndef
宏定義和#pragma once
兩種方式實現。函數
#ifndef
宏定義的方式:code
#ifndef SOME_UNIQUE_NAME_HERE #define SOME_UNIQUE_NAME_HERE // contents of the header ... #endif // SOME_UNIQUE_NAME_HERE
#pragma once
的方式編譯器
#pragma once // contents of the header ...
兩種方式的優缺點:編譯
#pragma once
兼容性差,有些編譯器並不支持這個宏命令。宏定義的方式能獲得更普遍的支持。#pragma once
的方式只能控制整個代碼文件只編譯一次。#pragma once
的功能是宏定義功能的子集。#pragma once
語法更加簡潔,可讀性更好,而宏定義的方式須要寫成三句話。