OpenNI 中的很多函数返回如下:
XN_C_API XnInt32 XN_C_DECL xnVersionCompare (const XnVersion *pVersion1, const XnVersion *pVersion2)
我现在想知道什么是 XN_C_API 和 XN_C_DECL。好奇而已!
它与返回值无关。不看源代码,我怀疑在为 Windows 编译时:
XN_C_API
被定义为__declspec(dllexport)
或__declspec(dllimport)
取决于您是在编译 DLL 还是从中导入函数。
XN_C_DECL
被定义为函数所需的调用约定(可能是__stdcall
or __cdecl
)
在没有查看定义的情况下,我猜想:
XN_C_API
对于 C++ 编译器来说是有效extern "C"
的,因此可以从 C++ 调用 C 函数。
XN_C_DECL
处理 Windows 强加的调用约定和导出/导入问题。那可能是__declspec(ddlexport)
or __declspec(dllimport)
,它可能包括__stdcall
等,也可能担心FAR
等(但可能不再需要)。