3

我正在尝试传递函数指针,但我不断收到编译器错误。我通常不传递函数指针,但这种情况需要它。我认为您只需要查看声明即可了解我做错了什么。

在头文件中我有:

pthread_t * createThread(void *(*func)(void *), string arg)

在实现中是一样的:

pthread_t * createThread(void *(*func)(void *), string arg)

在调用这个函数时,我正在做: createThread(&afunction, "ran again")

而afunction的声明是:

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
4

1 回答 1

1

您没有将实现链接到您的可执行文件。这与函数指针无关。这就是您编译源代码的方式。

于 2012-04-18T08:14:28.563 回答