比方说,我有一个C++头文件foo.hpp
:如何在C中实现在C++名称空间中声明的函数?
namespace foo {
int bar(int);
}
,因为它需要只能从命名空间foo
访问我不能使用extern "C"
。
是否有一个便携式(或相对便携)的方式来声明foo::bar
在C文件foo.c
,以便它将链接任何使用从C++ foo::bar
?
我知道,有一个特定的编译器在特定的系统,我可以找出如何foo::bar
是错位的,做这样的事情在foo.c
:
int ZN3foo3barEi(int x) { /* ... */ }
但这既不便携,也不可读。
不,你有一个'extern“C”foo_bar“转发到'foo :: bar'或者从命名空间foo和'extern'C”foo_bar'删除该条(实现该功能) – 2015-02-11 18:06:55
你是什么是指“转发”? – Matt 2015-02-11 18:13:06
转发:'extern“C”int foo_bar(int x){return foo :: bar(x); }' – 2015-02-11 18:18:25