gpt4 book ai didi

c++ - 类型定义语句是否相等?

转载 作者:行者123 更新时间:2023-11-28 07:15:15 25 4
gpt4 key购买 nike

我需要导出模板特化。

以下定义是否相等?

typedef std::vector<int> MY_API MyIntArray; // (1)

template class MY_API std::vector<int>; // (2)
typedef std::vector<int> MyIntArray;

常见 MY_API宏定义看起来像 #define MY_API __declspec(dllexport) .

另一个问题是——模板特化发生在typedef std::vector<int> MyIntArray;吗? ?


我已经看到了一堆关于使用 STL 的问题跨模块/dll 边界和潜在问题的类。

最佳答案

不——typedef#define 的稍微(但只是稍微)更聪明的版本,它将指定的名称与指定的类型等同起来。它在编译器的符号表中添加了一个条目,说明该名称代表该类型。

typedef 仅此而已。它特别实例化指定的类型,因此它不等同于相关模板的显式实例化。 (至于为什么它不显式实例化类型:一方面,因为您可以创建不完整类型的 typedef,在类型完成之前无法实例化)。

关于c++ - 类型定义语句是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343958/

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