2012-01-16 55 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