gpt4 book ai didi

c++ - 在 C++ 中的 extern "C"期间是否只允许 C 定义的数据类型?

转载 作者:行者123 更新时间:2023-12-05 03:23:57 24 4
gpt4 key购买 nike

我正在开发动态库,在使用 extern "C" 时是否可以让函数输出自定义类对象,或者我是否仅限于 C 的原生数据类型。

例如,我可以

extern "C" std::string func(const std::string& str);

这样我就可以在加载库并获取函数符号后获取该函数并使用它?

std::string result = func("Lol");

最佳答案

extern "C" std::string func(const std::string& str);

will give func C-style linkage . func 不会是 mangled允许使用有趣的 C++ 技巧,例如重载。

它不会阻止函数接受或返回 C++ 类型,但调用语言必须知道如何解释该类型。对于非标准布局的类型、普通类型(我们过去称之为 POD ),这将是难以实现的。

旁注:由于标准库的实现可能不同,这对于像 std::string 这样的类型来说可能会有问题,即使调用者是 C++ 代码也是如此。

关于c++ - 在 C++ 中的 extern "C"期间是否只允许 C 定义的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72409329/

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