C와 C++로 작성된 libary에 문제가 있습니다.이 문제는 extern "C"로 선언 된 함수 포인터가 있지만 extern "C"로 선언되지 않은 C++ 함수 (내 경우에는 libary에서 함수를 호출 할 때 NULL 포인터)를 가리 킵니다. 코드에서 이제Extern "C"NULL 함수 포인터
:
function_from_lib(... , (int (*)()) NULL);
자, 여기 당신은 내가 함수에 functionpointer를 전달할 것을 볼 수 있습니다. 문제는 내가 NULL을 가리키는 함수 포인터가 필요하지만 "NULL"이 가리키는 (어리석은) 함수는 extern "C"
으로 선언되어야한다는 것입니다. 아무도 그러한 문제 또는 해결 방법을 해결하는 방법을 알고 있습니까? 함수가 어떻게 보이는지 실마리가 없지만 내 작업에는 NULL 함수 포인터가 필요합니다.
extern "C" int fkt()
{
return NULL;
}
이 일한 것
을하지만 난 NULL 함수 포인터를 필요
그래서 다음과 같이 다른 기능을 통과해야합니다.
편집 :
음이 작동합니다
int fkt()
{
return NULL;
}
...
function_from_lib(... , fkt);
을 그리고 지금은
function_from_lib(... , (int (*)()) NULL);
functionpointer에 NULL을 전달해야
extern "C" int fkt()
{
return NULL;
}
...
function_from_lib(... , fkt);
이 작동하지 않을 것입니다 그리고 그것은 ' 들 : t의 작품은 "C"
EDIT2 (오류 UPDATE)
ERROR:
argument of type "I32(*)()" is incompatible with parameter of type "I32(*)() C"
당신이 시도하고 – nishantjr
IIRC 작동하지 않습니다 무엇보다 완전한 코드 샘플을 추가하십시오,'통근 "C"는'단지 엉망이되는 함수 이름을 방지 (C++은 허용 하는가 예를 들어, 함수 오버로딩). 함수 포인터에 아무런 영향을 미치지 않습니다. 귀하가 실제로 저지른 실수는 무엇입니까? – Medo42
이제 제가 의미하는 바가 조금 더 분명해지기를 바랍니다. –