Volatile Struct Semantics

后端 未结 2 1047
说谎
说谎 2020-12-12 19:52

Is it sufficient to declare an instance of a structure-typed variable as volatile (if its fields are accessed in re-entrant code), or must one declare specific fields of the

相关标签:
2条回答
  • 2020-12-12 20:14

    In your example, the two are the same. But the issues revolve around pointers.

    First off, volatile uint8_t *foo; tells the compiler the memory being pointed to is volatile. If you want to mark the pointer itself as volatile, you would need to do uint8_t * volatile foo;

    And that is where you get to the main differences between marking the struct as volatile vs marking individual fields. If you had:

    typedef struct
    {
        uint8_t *field;
    } foo;
    
    volatile foo f;
    

    That would act like:

    typedef struct
    {
        uint8_t * volatile field;
    } foo;
    

    and not like:

    typedef struct
    {
        volatile uint8_t *field;
    } foo;
    
    0 讨论(0)
  • 2020-12-12 20:20

    if you declare a structure with volatile then all its members will also be volatile

    0 讨论(0)
提交回复
热议问题