麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

VC++开发GIS系统(3)关于#ifndef#define#endif的说明

在我之前的文章使用DLL导出类编程示例中使用到了下面的这样一组代码。

#ifndef _CALLDLG_H_EXPORT
#define CALLDLG_EXPORT __declspec(dllimport)
#else
#define CALLDLG_EXPORT __declspec(dllexport)
#endif

并且在文章warning C4273: dll链接不一致对产生的warning进行了说明和改正。但是很多朋友可能并不了解这代码的含义,包括我本人在内。本文尝试做一个简单的说明。

头文件的重复包含

其实最常见的就是在头文件的重复包含问题的解决上,通常在写头文件的时候会有下面这样的代码。

#ifndef _MYHEADER_H_ 
#define _MYHEADER_H_

//yourcode

#endif

在理论上来说_MYHEADER_H_可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:myheader.h(参考)

条件编译

另外的一种应用也比较常见,就是条件编译。如:

#ifdef _DEBUG
     TRACE("debug mode");
#else
     //release mode
#endif

如果在debug模式下可以查看相关信息,而在release模式下就看不到。

关于DLL导出

也许许多人就是为了看这个的,在之前的文章中我也就是用了这样的代码:

#ifndef _CALLDLG_H_EXPORT
#define CALLDLG_EXPORT __declspec(dllimport)
#else
#define CALLDLG_EXPORT __declspec(dllexport)
#endif

这代码的意义就是:这样在DLL代码本身就是__declspec(dllexport) ,在使用DLL的程序中就变成了__declspec(dllimport),这两标志分别用来指明当前的函数将被导出,和当前函数是被导入的(参考)。

麻辣GIS-Sailor
作者:
GIS爱好者,学GIS,更爱玩GIS。
微博关注
手机阅读
赞赏支持
手机阅读
微信捐助麻辣GIS
微信打赏
支付宝捐助麻辣GIS
支付宝打赏

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

3.如果本文对您有所帮助,请您对我们团队进行 打赏捐助让我们在传播3S的路上可以走得更远,不胜感激。PS:如果你是学生党,请优先把经费用于购买学习资料 以及 与小哥哥/小姐姐约会上:-)

如您有疑问,可在文末留言,或到麻辣GIS QQ群中提问。

QQ群(一):291616564 加入QQ群

QQ群(二):166408035 加入QQ群

QQ群(三):627853279 加入QQ群

QQ群(四):436386604 加入QQ群

QQ群(五):606176554 加入QQ群

QQ群(六):946178380 加入QQ群

QQ群(七):861271808 加入QQ群

新疆互助群:910717627 加入QQ群

微信公众号:malagis,扫描右边二维码直接关注。

发表评论