コンパイラの警告 (レベル 3) C4414
'function': near に変換された関数への短いジャンプ
短いジャンプによって生成される簡潔な命令は、その命令から限られた範囲内にあるアドレスに分岐します。 その命令には、ジャンプとターゲット アドレス (関数定義) との距離を表す短いオフセットが含まれます。 リンク中、関数が移動されるか、リンク時の最適化の対象になると、短いオフセットで到達可能な範囲から関数が外れる場合があります。 コンパイラは、ジャンプ用に特別なレコードを生成する必要があり、この場合 jmp 命令は NEAR または FAR でなければなりません。 コンパイラは変換を実行しました。
たとえば、次のコードでは C4414 が生成されます。
// C4414.cpp
// compile with: /W3 /c
// processor: x86
int DoParityEven();
int DoParityOdd();
unsigned char global;
int __declspec(naked) DoParityEither()
{
__asm
{
test global,0
jpe SHORT DoParityEven // C4414
jmp SHORT DoParityOdd // C4414
}
}