gpt4 book ai didi

c++ - 两个 DLL 声明之间的区别

转载 作者:搜寻专家 更新时间:2023-10-31 00:49:41 25 4
gpt4 key购买 nike

我有一个简单但微妙的问题。下面是 DLL 头文件中同一类的两个不同声明变体。

谁能告诉我这个类声明的区别;

class __declspec(dllexport) Car {
public:
Car();
void drive(void);
typedef enum { None, Indented } Formatting;
}

从这个?

class Car {
public:
__declspec(dllexport) Car();
__declspec(dllexport) void drive(void);
__declspec(dllexport) typedef enum { None, Indented } Formatting;
}

在第一个声明中,类本身是 gets __declspec(dllexport),而在后一种情况下,每个类元素都是单独声明的。

它们是不同的还是有任何共同点?

最佳答案

使用 depends 进行的简短测试表明与第二个示例相比,第一个示例导出了一个额外的符号(顺便说一句,您不导出枚举,这是不合法的)。如果我没记错的话,我相信这是默认的赋值运算符。

第一种方法导出整个类,第二种方法仅导出以 declspec 为前缀的方法(我猜这并不奇怪)。

所以我想说导出类的正确方法显然是第一种,就我个人而言,我还没有看到任何使用第二种方法导出的类。

关于c++ - 两个 DLL 声明之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/926187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com