我正在尝试传递一个函数指针,但我不断收到编译器错误。我通常不会传递函数指针,但这种情况需要它。我认为你只需看到声明就能看出我做错了什么。
我在头文件中的:
pthread_t * createThread(void *(*func)(void *), string arg)
并且在实现中它是相同的:
pthread_t * createThread(void *(*func)(void *), string arg)
在调用此函数时,我正在做: createThread(&功能,“再次运行”)
并且声明的功能是:
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
答案 0 :(得分:1)
您没有将实现链接到您的可执行文件。这不是关于函数指针。这就是你编译源代码的方式。