Freigeben über


Compilerwarnung (Ebene 3) C4197

'type': Veränderliche Veränderliche Umwandlungen werden ignoriert.

Der Compiler hat eine Umwandlung in einen R-Wert-Typ erkannt, der mit veränderlich qualifiziert ist, oder eine Umwandlung eines r-Wert-Typs in einen Typ, der mit veränderlich qualifiziert ist. Gemäß dem C-Standard (6.5.3) sind Eigenschaften, die qualifizierten Typen zugeordnet sind, nur für l-Value-Ausdrücke aussagekräftig.

Im folgenden Beispiel wird C4197 generiert:

// C4197.cpp
// compile with: /W3
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>

void sigproc(int);
struct S
{
   int i;
} s;

int main()
{
   signal(SIGINT, sigproc);
   s.i = 1;
   S *pS = &s;
   for ( ; (volatile int)pS->i ; )   // C4197
      break;
   // for ( ; *(volatile int *)&pS->i ; )   // OK
   //    break;
}

void sigproc(int) // ctrl-C
{
   signal(SIGINT, sigproc);
   s.i = 0;
}