2011-08-25 126 views
0

我有一个功能叫警告:控制到达非void函数结束

void *func(void *arg) 
{ 
    ///does some operation 
} 

现在我得到一个编译器警告说:“控制到达非void函数结束”即使我声明的返回类型为void *

任何人都可以请告诉我如何解决这个警告?

+0

请发布您的所有代码,至少一个工作示例。 – 2011-08-25 12:21:37

回答

3

返回类型是void *,这意味着您将返回一个指针。也许你想输入void,这意味着你不会返回任何东西?

+1

也许他通过回调绑定到这个函数签名。然后他不能改变这一点,但应该简单'返回NULL;'? – Nobody

+0

@ Andrea ..它实际上是无效的func(无效)之前,但我已经改变了原型void * func(void * arg),因为为了避免警告,我得到了第三个参数为pthread_create函数。 – maddy

+0

@Nobody ...返回一个NULL..does它有任何其他的后果。是返回NULL相同的使用void *? – maddy

0

我们需要所有代码才能真正看到发生了什么,但是编译器无法从该代码中判断函数是否会达到最终结果并返回某些内容。你说它会返回一个指针 - 一个void* - 并且什么也没有返回。这不是一个无效函数,那是一个void*函数。编译器希望你返回一个void*,但是你可能会掉到函数的尾部。

您也可能有一个无限的while循环,编译器足够聪明地知道该函数不会返回,但这是纯粹的推测,因为您没有发布所有代码。

相关问题