함수 포인터를 전달하려고하는데 컴파일러 오류가 계속 발생합니다. 나는 일반적으로 함수 포인터를 전달하지 않지만이 경우에는 포인터가 필요합니다. 나는 당신이 내가 잘못하고있는 것을보기 위해 선언문 만 볼 필요가 있다고 생각합니다. (& afunction을 createThread :C++ 함수 포인터를 인수로 전달합니다.
pthread_t * createThread(void *(*func)(void *), string arg)
및 구현에는 동일합니다 : 헤더 파일에
내가 가진pthread_t * createThread(void *(*func)(void *), string arg)
내가 뭘이 함수 호출에 , "도망 쳤다")
다음과 같은 기능 선언이 있습니다 :void *afunction(void *ptr) //(no header, same for both declaration and implementation).
하지만 컴파일러는이 밖으로 뱉어 :
Undefined symbols for architecture x86_64:
"createThread(void* (*)(void*), std::basic_string<char, std::char_traits<char>, std::allocator<char> >)", referenced from:
spawnSingleThreadTest() in threadTests.o
createThread의 정의는 어디에 있으며 어떻게 생깁니 까? –
은 모두이 파일에 있으며 (빌드 방법은 무엇입니까?) – moooeeeep
이것은 링커 오류입니다. 즉, 링커에서 함수의 정의를 찾을 수 없습니다. 프로젝트에서 네임 스페이스를 사용 했습니까? 문제가 있는지 확인하십시오. 맞춤법 오류가 있습니까? 아니면 선언 및 정의에 다른 네임 스페이스를 사용 했습니까? – Nawaz