2012-01-16 4 views
0

何かを返す関数で何も返さなければ、コンパイラは関数が何も返さないことを警告します。戻り値のない関数を返さないようにするにはどうすればよいですか?

しかし、関数内でabort()を呼び出すと、コンパイラは警告しません。このような自分自身の機能をどのようにマークできますか?

+1

値を返さない場合は、メソッドが 'void'を返すようにします。すべてではなく値を返す場合は、戻り値の型が取ることができる値を選択します。これは「値なし」などを意味します。メソッドが必要なときに意図的にリターンを省略してはいけません。これは悪い習慣であり、Objective-Cでは本当に必要なことではありません。 – darvids0n

+0

@ darvids0nこれは通常、内部で '@ throw 'するユーティリティ関数を呼び出すときに必要です。 – Eonil

+0

同じことを達成するには '[NSException raise]'を使うことができます。コンパイラはこのアプローチを使用して警告しますか? – darvids0n

答えて

3

__attribute__((__noreturn__))はClangまたはGCCのためにそれをする必要があります。 Objective-Cの質問にタグが付いているので、それはあなたのためにする必要があります!

+0

標準について言及してくれてありがとう:) – Eonil

0

私はabort()関数を検査し、この属性を発見しました。

__attribute__((__noreturn__)) 

私がこの仕事がうまくとにかく、gcc特定の拡張子だと思います。標準のものについて何か知っているなら、別の答えを加えてください。ありがとう:)

+3

そのコンセプトは言語には存在しないので、返されない関数を持つ標準的な方法はありません。 –

関連する問題