ProgramingTip

인증서 구조 의미론

bestdevel 2020. 11. 18. 09:30
반응형

인증서 구조 의미론


구조 유형 변수의 인스턴스를 뽑아야 할 인스턴스를 선택할 수 있고 (필드가 재진입 코드에서 액세스 할 경우), 아니면 구조의 특정 필드가 인증으로 선언해야합니까?

다르게 표현하면 다음 사이의 의미 적 차이 (있는 경우)는 무엇입니까?

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)로 선언하는 것입니다. 구조 변수에 대한 비유가 적용 여부는 나에게 명확하지 않습니다.


귀하의 예에서 두 가지가 동일합니다. 그러나 문제는 포인터를 중심으로합니다.

먼저 ,

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로 구조를 선언하면 모든 멤버도 인증서가됩니다.

참고 URL : https://stackoverflow.com/questions/2044565/volatile-struct-semantics

반응형