【问题标题】:Where should _declspec be placed?_declspec 应该放在哪里?
【发布时间】:2018-11-20 21:51:00
【问题描述】:

我正在从 def 文件切换到对我维护的库使用 _declspec。我已经阅读了关于 SO 和 MSDN 文档的几个问题。我了解该功能的工作原理。我创建了宏并根据构建环境使用_declspec 或 gcc __attribute__。宏还可以在 _declspec(dllexport)_declspec(dllimport) 之间正确选择。

在函数定义上使用_declspec 有什么害处吗? _declspec 应该只用在函数原型上吗?

我更希望在函数原型和定义上都有 marco。我在函数原型和定义上都使用_declspec 进行了测试。使用 VS 编译的库没有警告,我能够毫无问题地使用该库。

【问题讨论】:

    标签: c shared-libraries dllexport


    【解决方案1】:

    对函数定义没有危害 - sing __declspec(dllimport) 在函数声明中是可选的,但如果您使用此关键字,编译器会生成更高效的代码。但是,您必须使用 __declspec(dllimport) 来导入可执行文件以访问 DLL 的公共数据符号和对象。 它主要用于将符号从/导出到共享库 (DLL) 中。 Visual C++ 和 GCC 编译器都支持 __declspec(dllimport) 和 __declspec(dllexport)。

    您也可以将其用于变量。

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 2012-07-18
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多