#pragma once和#ifndef

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語法更加簡潔,可讀性更好,而宏定義的方式須要寫成三句話。
相關文章
相關標籤/搜索