[Windows編程] #pragma once 和#ifndef ... #define ... #endif 比較
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
C++中防止頭文件被多次include 的常見方式有:
1) 用#ifndef ... #define ... #endif 宏
#ifndef __MYHEADER_H__
#define __MYHEADER_H__ // Here is my class ... #endif 2) 用 #pragma once
#pragma once
// Here is my class ...
建議使用 #pragma once ,原因: 1) 代碼簡潔,維護性比較好。 #pragma once 顯然比 #ifndef ... 要簡短許多,而且避免了__MYHEADER_H__ 重定義 或者 #endif 包含范圍錯誤的情況 2) 編譯速度快。 使用 #ifndef 的話,編譯器每次看到#include這個文件都需要讀入文件,解析代碼。 而使用#pragma once 編譯器根本不會重復打開文件, 大大提高了效率。
以上兩點在大型C++工程中表現得尤為突出。 注: #pragma once 不是國際標準, 只是微軟C++ 的一個功能, 但現在多數主流C++編譯器也都實現了這個功能。RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
#define __MYHEADER_H__ // Here is my class ... #endif 2) 用 #pragma once
#pragma once
// Here is my class ...
建議使用 #pragma once ,原因: 1) 代碼簡潔,維護性比較好。 #pragma once 顯然比 #ifndef ... 要簡短許多,而且避免了__MYHEADER_H__ 重定義 或者 #endif 包含范圍錯誤的情況 2) 編譯速度快。 使用 #ifndef 的話,編譯器每次看到#include這個文件都需要讀入文件,解析代碼。 而使用#pragma once 編譯器根本不會重復打開文件, 大大提高了效率。
以上兩點在大型C++工程中表現得尤為突出。 注: #pragma once 不是國際標準, 只是微軟C++ 的一個功能, 但現在多數主流C++編譯器也都實現了這個功能。RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成