2012-01-16 56 views
0

如果我不返回任何返回值的函数,编译器会警告函数没有返回任何东西。如何标记返回类型不返回的函数?

但是如果我在函数中调用abort(),编译器不会发出警告。我如何标记我自己的功能是这样的。

+1

如果你不想返回一个值,使该方法返回'void'。如果您确实想在某些情况下返回值,但不是全部,请选择您的返回类型可以采用的值,即“无值”或类似值。在方法需要时,你不应该故意省略回报,这是不好的做法,在Objective-C中从来没有真正需要。 – darvids0n 2012-01-16 02:46:40

+0

@ darvids0n调用在内部执行'@ throw'的效用函数时,通常需要这样做。 – Eonil 2012-01-16 04:17:06

+0

你可以使用'[NSException raise]'来完成同样的事情。编译器是否仍然警告使用这种方法? – darvids0n 2012-01-16 04:20:27

回答

3

__attribute__((__noreturn__))应该为Clang或GCC做它。由于你已经为Objective-C标记了你的问题,所以应该为你做!

+0

感谢提及关于标准:) – Eonil 2012-01-16 04:17:36

0

我检查了abort()函数并发现了这个属性。

__attribute__((__noreturn__)) 

我觉得这是gcc的具体扩展,反正这个很好用。如果您对标准材料有所了解,请添加其他答案。谢谢:)

+3

由于该概念在该语言中不存在,因此没有标准的方法来使用非返回函数。 – 2012-01-16 02:34:43