好的,我正在尝试在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
}
}
答案 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。一个不带任何参数并且不返回任何参数的函数。