我正在从def文件切换到使用_declspec为我维护的库。我在SO和MSDN文档中已经阅读了几个问题。我理解这个功能是如何工作的。我已经创建了宏并使用_declspec
或gcc __attribute__
,具体取决于构建环境。宏也可以在_declspec(dllexport)
和_declspec(dllimport)
之间正确选择。
在函数定义中使用_declspec
有什么害处吗? _declspec
只能在函数原型上使用吗?
我更喜欢在功能原型和定义上都使用marco。我在函数原型和定义上使用_declspec
进行了测试。使用VS编译的库没有警告,我能够毫无问题地使用库。
答案 0 :(得分:0)
对函数定义没有任何影响 - 在函数声明中,__declspec(dllimport)是可选的,但如果使用此关键字,编译器会生成更高效的代码。但是,必须使用__declspec(dllimport)导入可执行文件才能访问DLL的公共数据符号和对象。 它主要用于将符号从/导出符号导入共享库(DLL)。 Visual C ++和GCC编译器都支持__declspec(dllimport)和__declspec(dllexport)。
您也可以将它用于变量。