一个可以extern "C"函数接受或返回C++ -特定的数据类型,如参考文献,指针到成员或非POD类(由值)?我在C++标准中找不到禁止此内容的任何内容.从逻辑上讲,我希望标准可以说一些,因为C ABI不一定适合传递这类类型.
我想要使用C链接的原因与C编译器无关.该函数仅从C++代码调用.我只想从动态库中导出未编码的函数名.
一个愚蠢的代码示例:
class Foo {
public:
virtual void doit() = 0;
};
class Bar : public Foo {
public:
void doit() { std::cout << "Bar" << std::endl; }
};
extern "C" Foo& getFoo() { static Bar bar; return bar; }
extern "C" Bar getBar() { return Bar(); }
Run Code Online (Sandbox Code Playgroud)
这在Linux上用GCC编译,并按预期工作.应该是标准吗?
问题是对这个问题的评论中的讨论的后续行动.
更新我用Comeau编译器对此进行了测试,它没有抱怨.