Volatile으로 선언하는 이유


Volatile으로 선언하는 이유

하드웨어를 제어할 때 Volatile로 선언되지 않은 경우는 프로세스가 실행되면서 코드를 알아서 최적화하기 때문에 우리가 원하는 실행결과가 나오지 않을 수도 있기 때문입니다! 하지만, Volatile을 사용하면 최적화를 하지 않습니다. 예를들어, C언어 컴파일러는 다음과 같은 코드를 자동으로 최적화하여 메모리 주소 0x2000100에 0x00000002를 넣는 코드만 실행 될 것입니다. (*((unsigned int *)(0x2000100))) = 0x00000000; (*((unsigned int *)(0x2000100))) = 0x00000001; (*((unsigned int *)(0x2000100))) = 0x00000002; 반면, 다음과 같이 volatile으로 선언한다면 컴파일러가 코드를 최적화하지 않기때문에 모든 코드가 실행될 것입니다! (*((volatile unsigned int *)(0x2000100))) = 0x00000000; (*((volatile unsig...



원문링크 : Volatile으로 선언하는 이유