__declspec(noreturn)

__declspec(noreturn) 属性は、関数が決して制御を返さないことを示します。

Note

この属性には、同等の関数 __attribute((noreturn)) があります。ただし、__attribute((noreturn))__declspec(noreturn) には違いもあります。関数定義をコンパイルする際に、関数が明示的または暗黙的なリターンに達した場合、__attribute((noreturn)) は無視され、コンパイラから警告が生成されます。このことは __declspec(noreturn) には当てはまりません。

Show/hide使用法

この属性を使用して、exit() など、戻らない関数を呼び出すコストを削減します。noreturn 関数がその呼び出し元に戻る場合の動作は定義されていません。

Show/hide制約条件

noreturn 関数の呼び出し時に、復帰アドレスは保持されません。これにより、デバッガによるコールスタックの表示が制限されます。

Show/hide

__declspec(noreturn) void overflow(void); // overflow は決して制御を返さない
int negate(int x)
{
    if (x == 0x80000000) overflow();
    return -x;
}

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711