구조체를 휘발성으로 만들면 모든 멤버가 휘발성이됩니까?
만약 내가 가지고 있다면:
struct whatever {
int data;
};
volatile whatever test;
것
test.data
역시 변동성이?
다른 질문을 할 수 있습니다 (또는 원래 질문을 보는 다른 방법).
구조체를 const
만들면 모든 멤버가 생성 const
됩니까?
만약 내가 가지고 있다면:
struct whatever { int data; };
const whatever test;
test.data도 const
마찬가지입니까?
내 대답은 : 네. 당신이 형식의 개체를 선언하는 경우 whatever
에 const
모든 회원이 될 것이다 const
너무
당신이 형식의 개체를 선언하는 경우 마찬가지로, whatever
함께 volatile
모든 회원이 될 것입니다 volatile
당신이 가진 개체를 선언하는 경우처럼, 너무 const
, 모든 그것의 회원이 될 것이다 const
너무.
const
및 volatile
동전의 양면이다; 표준에서 종종 cv-qualifiers
.
표준에서 인용 ($ 7.1.5.1 / 8)
[참고 : volatile은 객체 의 값이 구현에서 감지 할 수없는 수단으로 변경 될 수 있기 때문에 객체와 관련된 공격적인 최적화를 피하기 위한 구현 에 대한 힌트 입니다. 자세한 의미는 1.9를 참조하십시오. 일반적으로 volatile의 의미는 C에서와 같이 C + +에서 동일합니다.]
개체가 구조체의 인스턴스 인 경우 그 수단은 다음 컴파일러는 할 수없는 객체를 포함하는 공격적인 최적화를 피하기 , 하지 않는 한 그것의 각 구성원의 적극적인 최적화를 방지 할 수 있습니다. (그렇지 않으면 객체와 관련된 최적화를 어떻게 피할 수 있습니까?)
관련 주제 :
출처 : http://msdn.microsoft.com/en-us/library/145yc477%28v=vs.80%29.aspx
포인터가 가리키는 객체를 const 또는 volatile로 선언하려면 다음 형식의 선언을 사용하십시오.
const char *cpch;
volatile char *vpch;
포인터의 값, 즉 포인터에 저장된 실제 주소를 const 또는 volatile로 선언하려면 다음 형식의 선언을 사용하십시오.
char * const pchc;
char * volatile pchv;
'IT story' 카테고리의 다른 글
데이터 바인딩 된 뷰에서 If-Else 구조를 템플릿하는 방법은 무엇입니까? (0) | 2020.08.30 |
---|---|
텐서 보드 (가중치) 히스토그램 이해 (0) | 2020.08.30 |
Git 인터랙티브 리베이스 선택 커밋 없음 (0) | 2020.08.30 |
Android Studio 3.0.0에서 데이터 바인딩 및 Kotlin을 사용하는 방법 (0) | 2020.08.30 |
단일 파일에 대한 컴파일 플래그 무시 (0) | 2020.08.30 |