C에는 변수의 접근 및 수정을 통제하는 두 가지 키워드가 있는데 const 와 volatile 이다.
(1) const 의 경우 처음 선언 시에 설정된 값을 프로그램 실행 내내 유지하며, 변경할 수 없게된다.
문자열의 길이를 구하는 함수인 strlen 의 원형을 보면 size_t strlen(const char *str) 인데
이는 "이 함수는 string 을 변경하지 않겠다"는 의미도 내포하고 있는것이다.
(2) volatile 의 경우 단어의 뜻처럼 변덕이 심한 변수들을 선언할 때 쓴다.
다음의 예를 보자.
void func(){
int x = 10;
x = 20;
x = 30;
}
int형 변수 x는 10, 20, 30 으로 값이 변화하는데 이를 컴파일하게 되면 자동 최적화에 따라(컴파일러에 따라 다르지만) 다음과 같은 효과만 날 것이다.
int x = 30;
그런데 때로는 저 10, 20 이란 값이 필요해질 때가 있다. 특히 embedded 쪽에서는 시간에 따른 값에 변화가 중요해지기 마련이다. 이럴때 int volatile x 로 선언하면 컴파일러는 이를 최적화하지 않고 그대로 둔다.
'Computer > Language - C/C++' 카테고리의 다른 글
C++ 바닥부터 시작하기(2) - 변수의 선언과 초기화 (0) | 2011.03.23 |
---|---|
C++ 바닥부터 시작하기(1) - Hello World (0) | 2011.03.22 |
case 문에서는 변수 선언이 안된다?! (0) | 2010.11.09 |