比方說,我有一個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