动态链接库一开始定义的***_EXPORTS是在哪里定义的?

BedaWon 2017-07-31 03:01:42
动态链接库的头文件中,都会定义类似于如下的代码段:

#ifdef DLLTEST_EXPORTS
#define DLLTEST_API extern "C" _declspec(dllexport)
#else
#define DLLTEST_API extern "C" _declspec(dllimport)

这样做的好处是,在生成dll文件的时候,DLLTEST_EXPORTS标识了可由外部调用的函数等;在调用dll文件的时候,DLLTEST_EXPORTS标识了从dll中导入的函数;
但是我并没有找到DLLTEST_EXPORTS的定义语句,虽然把鼠标移上去的时候显示了:

#define DLLTEST_EXPORTS 1

但是我右击,显示代码的时候,提示错误:符号“DLLTEST_EXPORTS”不在源代码文件中,这是为什么呢?
...全文
920 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BedaWon 2017-07-31
  • 打赏
  • 举报
回复
引用 8 楼 fight_in_dl 的回复:
引用
多了一个下划线
这是命名规范 单下划线和双下划线开头的标识符是 保留 关键字,虽然也可以以单下划线或者双下划线命名变量(函数)。 但 非常强烈不建议这么做。 双下划线是微软公司对单下划线的扩展。这样的扩展有很多,适用于Windows平台。 查msdn时,如果留意,会注意到类似条目会有 Microsoft Specific 这个说明。
感谢提醒,新手还真的不知道这一点
BedaWon 2017-07-31
  • 打赏
  • 举报
回复
引用 7 楼 sdghchj 的回复:
[quote=引用 4 楼 BedaWon 的回复:] [quote=引用 3 楼 sdghchj 的回复:] VS2015里,项目属性->配置属性->C/C++->预处理器->预处理器定义。 其它版本的VS类似。
明白了,谢谢,还有一个问题想问下您,我学习的时候是_declspec,但是win32项目自动生成的代码是__declspec,这二者有什么区别吗?多了一个下划线。。。[/quote] stdafx.h里有以下两句,应该是一样的。 #define __declspec(x) #define _declspec(x)[/quote] 谢谢,好像确实是相同的,我用着没报错
BedaWon 2017-07-31
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
这个我明白的,点了之后没反应,谢谢,问题已经解决了
战在春秋 2017-07-31
  • 打赏
  • 举报
回复
引用
多了一个下划线
这是命名规范 单下划线和双下划线开头的标识符是 保留 关键字,虽然也可以以单下划线或者双下划线命名变量(函数)。 但 非常强烈不建议这么做。 双下划线是微软公司对单下划线的扩展。这样的扩展有很多,适用于Windows平台。 查msdn时,如果留意,会注意到类似条目会有 Microsoft Specific 这个说明。
sdghchj 2017-07-31
  • 打赏
  • 举报
回复
引用 4 楼 BedaWon 的回复:
[quote=引用 3 楼 sdghchj 的回复:] VS2015里,项目属性->配置属性->C/C++->预处理器->预处理器定义。 其它版本的VS类似。
明白了,谢谢,还有一个问题想问下您,我学习的时候是_declspec,但是win32项目自动生成的代码是__declspec,这二者有什么区别吗?多了一个下划线。。。[/quote] stdafx.h里有以下两句,应该是一样的。 #define __declspec(x) #define _declspec(x)
sdghchj 2017-07-31
  • 打赏
  • 举报
回复
引用 4 楼 BedaWon 的回复:
[quote=引用 3 楼 sdghchj 的回复:] VS2015里,项目属性->配置属性->C/C++->预处理器->预处理器定义。 其它版本的VS类似。
明白了,谢谢,还有一个问题想问下您,我学习的时候是_declspec,但是win32项目自动生成的代码是__declspec,这二者有什么区别吗?多了一个下划线。。。[/quote] 不知道噢,我一直都以为只有双下线的噢,没见过单线的。官网上也是双的 https://msdn.microsoft.com/en-us/library/dabb5z75.aspx
赵4老师 2017-07-31
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
BedaWon 2017-07-31
  • 打赏
  • 举报
回复
引用 3 楼 sdghchj 的回复:
VS2015里,项目属性->配置属性->C/C++->预处理器->预处理器定义。 其它版本的VS类似。
明白了,谢谢,还有一个问题想问下您,我学习的时候是_declspec,但是win32项目自动生成的代码是__declspec,这二者有什么区别吗?多了一个下划线。。。
sdghchj 2017-07-31
  • 打赏
  • 举报
回复
VS2015里,项目属性->配置属性->C/C++->预处理器->预处理器定义。 其它版本的VS类似。
BedaWon 2017-07-31
  • 打赏
  • 举报
回复
引用 1 楼 trytry1992 的回复:
#define DLLTEST_EXPORTS 1 你这是在哪定义的
我也没有定义,这是我刚刚生成的win32的dll项目 #define DLLTEST_EXPORTS 1 是我把鼠标移到DLLTEST_EXPORTS上的时候小窗口中显示的解释
trytry1992 2017-07-31
  • 打赏
  • 举报
回复
#define DLLTEST_EXPORTS 1 你这是在哪定义的

33,320

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧