C언어 컴파일러 지시자 중에 volatile 이란 것이 있다. 컴파일러에 따라 __volatile__ 등의 다른 이름일 수도 있다. 개념적으로 말하자면 사전 의미 그대로 휘발성 자료다. 지금은 안에 1이 들어 있지만 잠시 후 다시 읽어보면 값이 날아가 버리고 바뀌어 있을 수도 있는 변수다. 물론 나는 바꾸지 않았다. 그럼 누가 바꿨단 말인가? 펌웨어 프로그래밍을 해보면 레지스터라는 놈들이 메모리에 매핑되어 있는데, 얘들은 모두 volatile 메모리라고 보시면 된다. 내가 바꾸지 않아도 버튼을 누르면 값이 바뀌는 것처럼.. 읽을 때뿐만이 아니라 쓸 때도 마찬가지다. int I; I = 1; I = 2; I = 3; 이런 코드를 만들어 놓으면 컴파일러는 "이게 뭐하는 짓이냐!"며 앞부분은 무시하고 "I=3..