0

OpenNI 中的很多函数返回如下:

XN_C_API XnInt32 XN_C_DECL  xnVersionCompare (const XnVersion *pVersion1, const XnVersion *pVersion2)

我现在想知道什么是 XN_C_API 和 XN_C_DECL。好奇而已!

4

2 回答 2

4

它与返回值无关。不看源代码,我怀疑在为 Windows 编译时:

  • XN_C_API被定义为__declspec(dllexport)__declspec(dllimport)取决于您是在编译 DLL 还是从中导入函数。

  • XN_C_DECL被定义为函数所需的调用约定(可能是__stdcallor __cdecl

于 2012-03-07T19:32:08.793 回答
0

在没有查看定义的情况下,我猜想:

  • XN_C_API对于 C++ 编译器来说是有效extern "C"的,因此可以从 C++ 调用 C 函数。

  • XN_C_DECL处理 Windows 强加的调用约定和导出/导入问题。那可能是__declspec(ddlexport)or __declspec(dllimport),它可能包括__stdcall等,也可能担心FAR等(但可能不再需要)。

于 2012-03-07T19:34:21.433 回答