반응형
휘발성 구조 의미론
structure-type 변수의 인스턴스를 volatile로 선언하는 것으로 충분합니까(재엔트리 코드로 필드에 액세스하는 경우), 아니면 구조의 특정 필드를 volatile로 선언해야 합니까?
다른 표현으로 표현하면, 다음 사이의 의미적 차이(있는 경우)는 무엇입니까?
typdef struct {
uint8_t bar;
} foo_t;
volatile foo_t foo_inst;
그리고.
typedef struct{
volatile uint8_t bar;
} foo_t;
foo_t foo_inst;
포인터 타입 변수를 휘발성 변수(예: volatile uint8_t * foo)로 선언하는 것은 foo가 가리키는 값에 대한 설명은 하지 않고 컴파일러에게 변경할 수 있음을 알리는 것일 뿐이라는 것을 알고 있습니다.구조유형변수에 대한 유추여부는 나에게 명확하지 않다.
이 예에서는 두 가지가 동일합니다.하지만 이슈는 포인터를 중심으로 돌아간다.
일단은volatile uint8_t *foo;
는, 가리키는 메모리가 휘발성이 있는 것을 컴파일러에 통지합니다.포인터 자체를 휘발성이라고 마크하는 경우는, 다음의 조작을 실시할 필요가 있습니다.uint8_t * volatile foo;
여기서 구조체에 휘발성 마크를 붙이는 것과 개별 필드를 표시하는 것의 주요 차이점을 알 수 있습니다.다음과 같은 경우:
typedef struct
{
uint8_t *field;
} foo;
volatile foo f;
다음과 같이 동작합니다.
typedef struct
{
uint8_t * volatile field;
} foo;
다음과 같은 것이 아닙니다.
typedef struct
{
volatile uint8_t *field;
} foo;
volatile을 가진 구조를 선언하면 모든 구성원은 volatile이 됩니다.
언급URL : https://stackoverflow.com/questions/2044565/volatile-struct-semantics
반응형
'programing' 카테고리의 다른 글
Vuex/Nuxt에서 선택 양식 바인딩 (0) | 2022.08.13 |
---|---|
구성 API 플러그인을 사용하는 Vue 2의 기능 구성 요소에서 정의되지 않은 수신기 오류(정상 작동 중) (0) | 2022.08.13 |
Vue: v-모델이 정의되지 않았거나 기본/폴백 (0) | 2022.08.12 |
어레이에 푸시해도 vue의 반응성이 트리거되지 않음 (0) | 2022.08.12 |
libNAME.so 명명 규칙을 따르지 않는 라이브러리의 -l 또는 하드코드 경로를 사용하지 않고 GCC를 사용하여 링크하려면 어떻게 해야 합니까? (0) | 2022.08.12 |