휘발성은 두 가지를 의미합니다 -
- 코드를 변경하지 않고도 변수 값이 변경될 수 있습니다. 따라서 컴파일러는 변수의 값을 읽을 때마다 그것이 마지막으로 읽은 시간과 같다거나 마지막으로 저장된 값과 같다고 가정하지 않을 수 있지만 다시 읽어야 합니다.
- 휘발성 변수에 값을 저장하는 행위는 외부에서 관찰할 수 있는 "부작용"이므로 컴파일러는 값을 저장하는 행위를 제거할 수 없습니다. 예를 들어 두 개의 값이 한 행에 저장되면 컴파일러는 실제로 값을 두 번 저장해야 합니다.
예를 들어 -
i = 2; i = i;
컴파일러는 숫자 2를 저장하고, 변수 i를 읽고, 읽은 변수를 i에 저장해야 합니다.
volatile 키워드에 대한 자세한 내용은 https://www.geeksforgeeks.org/understanding-volatile-qualifier-in-c/