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!

Foi útil?

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 é efetivamente extern "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 com FAR etc (mas provavelmente não precisa mais).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top