控制达到无效的非空函数结束

时间:2013-07-29 14:13:19

标签: c++ multithreading pthreads void

好的,我正在尝试在c ++中的另一个线程中运行一个函数。它不需要参数,它是一个void函数。所以当我看到这个警告说:

warning: function declared 'noreturn' should not
  return [-Winvalid-noreturn]

我很惊讶。我正在使用pthread作为我的主题。这是我的功能声明:

void* checkLogKext(void*);

这就是我调用我的功能的地方:

pthread_t t1;
pthread_create(&t1, NULL, &checkLogKext, NULL);

这是我的功能:

void* checkLogKext(void*) {
    ifstream logKext("/LogKextUninstall.command");
    if (logKext.is_open()) {
        // Do something
    }
}

2 个答案:

答案 0 :(得分:8)

如果您不想返回void*的任何内容,则返回类型为void。关于你为你的职能所采取的论点,也可以这样说。

void* foo(void*) // this takes a void* as paremeter and is expected to return one too

void foo(void) // doesn't return anything, and doesn't take any parameters either

答案 1 :(得分:1)

你的函数声明说它返回一个void指针,但是在你向我们展示的代码中它没有这样做,所以编译器会警告你。将声明更改为

void checkLogKext(void*);

或实际返回一些东西。但我想你的意思实际上是

void checkLogKext();

e.g。一个不带任何参数并且不返回任何参数的函数。