【发布时间】:2015-05-13 20:27:02
【问题描述】:
namespace someNameSpace {
extern "C" void doSomething()
{
someOperations();
}
}
我想在 C++ 和 C 环境中运行 doSomething()。
如果我将 someNameSpace 暴露给 extern "C" 链接,someNameSpace 是否仍然封装 doSomething()?
有没有一种好方法可以在 C++ 和 C 之间共享函数,同时避免污染 C++ 端的全局命名空间?
编辑:因为这段代码主要用于C++模式,而C链接仅供测试使用,我想这是一个更好的方法。
namespace someNameSpace {
#ifdef COMPILE_FOR_C_LINKAGE
extern "C"
#else
extern "C++"
#endif
{
void doSomething()
{
someOperations();
}
}
}
【问题讨论】:
-
您是否尝试在 C 程序中使用它?如果有,发生了什么?
-
@RyanJ 是的,我试过了,它在 C++ 和 C 中都能很好地编译和链接。我还没有运行它。
标签: c++ c namespaces