Freigeben über


Compilerwarnung (Ebene 3) C4414

'Funktion': Kurzer Sprung zur Funktion, die in die Nähe konvertiert wurde

Kurze Sprünge generieren eine kompakte Anweisung, die innerhalb eines begrenzten Bereichs von der Anweisung zu einer Adresse verzweigt. Die Anweisung enthält einen kurzen Offset, der den Abstand zwischen dem Sprung und der Zieladresse, der Funktionsdefinition, darstellt. Während der Verknüpfung kann eine Funktion verschoben oder unterliegt Verknüpfungszeitoptimierungen, die dazu führen, dass die Funktion aus dem Bereich verschoben wird, der aus einem kurzen Offset erreichbar ist. Der Compiler muss einen speziellen Datensatz für den Sprung generieren, bei dem die jmp-Anweisung entweder NEAR oder FAR sein muss. Der Compiler hat die Konvertierung vorgenommen.

Der folgende Code generiert z. B. 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
   }
}