Pergunta
Muitas funções no OpenNI retornam assim:
XN_C_API XnInt32 XN_C_DECL xnVersionCompare (const XnVersion *pVersion1, const XnVersion *pVersion2)
Gostaria de saber o que é XN_C_API e XN_C_DECL.Só curiosidade!
Solução
Não tem nada a ver com o valor de retorno.Sem olhar a fonte, suspeito que ao compilar para Windows:
XN_C_API
é definido para qualquer um__declspec(dllexport)
ou__declspec(dllimport)
dependendo se você está compilando a DLL ou importando funções dela.XN_C_DECL
fica definido para o desejado convenção de chamada para a função (provavelmente__stdcall
ou__cdecl
)
Outras dicas
Sem ter olhado as definições, eu diria:
XN_C_API
é efetivamenteextern "C"
para um compilador C++ para que uma função C possa ser chamada a partir de C++.XN_C_DECL
lida com as convenções de chamada e questões de exportação/importação impostas pelo Windows.Isso pode ser__declspec(ddlexport)
ou__declspec(dllimport)
, e pode incluir__stdcall
etc, e também pode se preocupar comFAR
etc (mas provavelmente não precisa mais).