다음을 통해 공유


컴파일러 경고(수준 3) C4197

'type': 캐스트의 최상위 휘발성이 무시됨

컴파일러는 휘발성으로 한정 된 r-값 형식 또는 r-value 형식의 캐스트를 volatile로 한정된 일부 형식으로 캐스팅하는 것을 감지했습니다. C 표준(6.5.3)에 따르면 정규화된 형식과 연결된 속성은 l-value 식에만 의미가 있습니다.

다음 샘플에서는 C4197을 생성합니다.

// 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;
}