volatile pointer 질문.
글쓴이: 지나가는새 / 작성시간: 수, 2006/01/11 - 2:38오후
다음의 두 소스에서 차이점이 있나요? 전 있을거 같은데..
A. volatile struct private *p = priv; uint s = p->actus;
B. struct private *p = priv; volatile uint *s = &(p->actus);
전 A 방식에서는 s의 변화가 함수 내에서 변화 가능 하지 않지만 B방식은 그렇지 않은것 같습니다.
제가 제대로 보고 있는건지 아리까리 하네요.
조언 부탁 드려요~
Forums:
A의 경우 p->actus의 값을 s로 복사하는 것이므로 s의 변경
A의 경우 p->actus의 값을 s로 복사하는 것이므로 s의 변경이 p가 가리키는 대상에
미치는 영향은 없습니다. volatile의 의미는 프로그램에 알려지지 않은 방식으로
변경될 수 있으니 컴파일러가 코드를 있는 그대로 번역해야 하면 함부로 최적화 같은
것은 하지 말라는 것입니다. 예를 들어 p가 가리키는 대상이 volatile이므로
이런 코드를
이런 식으로 번역하지 말라는 뜻이죠.
마찬가지로 B의 경우도
이것을
이런 식으로 번역하지 말라는 뜻입니다.
댓글 달기