2

好的,我正在尝试在 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
    }
}
4

2 回答 2

9

你的返回类型是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

于 2013-07-29T14:14:27.200 回答
2

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

void checkLogKext(void*);

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

void checkLogKext();

例如,一个不带任何参数且不返回任何内容的函数。

于 2013-07-29T14:15:58.583 回答