Cpp回报好奇心

时间:2012-03-07 19:28:43

标签: c++ openni

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

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

我现在想要的是什么是XN_C_API和XN_C_DECL。 只是好奇!

2 个答案:

答案 0 :(得分:4)

这与返回值无关。在没有查看源代码的情况下,我怀疑在编译Windows时:

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

  • XN_C_DECL被定义为该函数所需的calling convention(可能是__stdcall__cdecl

答案 1 :(得分:0)

如果没有查看定义,我猜:

    对于C ++编译器,
  • XN_C_API实际上是extern "C",因此可以从C ++调用C函数。

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