gpt4 book ai didi

c++ - c++ 1z模块是否会取代Windows上对dllimport dllexport的需求

转载 作者:行者123 更新时间:2023-11-30 00:46:32 24 4
gpt4 key购买 nike

我正在了解 C++1z 的模块提案。我最大的希望是它能取代dllimportdllexport在windows上的使用。使用 c++1z 模块,我是否能够在 Windows 上构建 .dll 并在 linux 上构建 .so 避免使用 dllimport/dllexport ?模块 export 是否是所有平台和编译器所需的全部?

最佳答案

很遗憾,没有。

C++ 中的模块提案试图解决 header 中的缺点,这些缺点对于涉及 header 的代码尤其成问题。

模板通常完全在 header 中实现——但这意味着模板的内容受制于包含该 header 之前发生的任何预处理器定义。

例如,如果您的模板使用 i 作为标识符,并且带有类似 #define i 2 的 header 恰好包含在您的模板 header 之前,则您的代码可以这样开始:

for (int i=0; i<10 ; i++)

...但是预处理器完成后,它看起来像这样:

for (int 2=0; 2<20; 2++)

...那显然根本无法编译。

模块解决了这个问题。模块是独立编译的,而不是在头文件中。由于它是独立编译的,因此模块不受其他 header 的影响,除非其源代码包含这些 header 。

同样, header 中的任何预处理器定义都不会影响导入模块的任何代码。模块中唯一在导入该模块的文件中可见的名称是从模块中显式导出的名称。

关于c++ - c++ 1z模块是否会取代Windows上对dllimport dllexport的需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38060483/

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