[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中间件 条码系统中间层 物联网软件集成