Многие функции в 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_API
__declspec(dllexport)
__declspec(dllimport)
XN_C_DECL определяется для требуемого соглашения о вызовах для функции (возможно __stdcall или __cdecl)
XN_C_DECL
__stdcall
__cdecl
Не взглянув на определения, я бы догадался:
XN_C_API эффективно extern "C" для компилятора C ++, так что функцию C можно вызывать из C ++.
extern "C"
XN_C_DECL относится к соглашениям о вызовах и проблемам экспорта / импорта, навязанным Windows. Это может быть __declspec(ddlexport) или __declspec(dllimport), и оно может включать __stdcall и т. Д., А также может беспокоиться о FAR и т. Д. (Но, вероятно, больше не нужно).
__declspec(ddlexport)
FAR