“const volatile”类型限定符的实时应用是什么?
“const volatile”类型限定符的实时应用是什么?,c,embedded,C,Embedded,const volatile类型限定符的实时应用是什么?在哪种情况下会使用此选项。我知道volatile关键字和const限定符的应用,但我不了解const volatile的用法。请分享你的想法 C标准(ISO/IEC 9899:2011§6.7.3类型限定符)给出了一个示例: 示例1声明了一个对象 extern const volatile int real_time_clock; 可以由硬件修改,但不能指定、递增或递减 这告诉C编译器,虽然程序不能修改实时时钟,但实时时钟可以改变,因此在
const volatile
类型限定符的实时应用是什么?在哪种情况下会使用此选项。我知道volatile
关键字和const
限定符的应用,但我不了解const volatile
的用法。请分享你的想法 C标准(ISO/IEC 9899:2011§6.7.3类型限定符)给出了一个示例:
示例1声明了一个对象
extern const volatile int real_time_clock;
可以由硬件修改,但不能指定、递增或递减
这告诉C编译器,虽然程序不能修改实时时钟,但实时时钟可以改变,因此在优化引用它的代码时必须谨慎对待。
const
和volatile
可以通过三种方式组合,以获得不同的有用效果。示例:
uint8_t volatile* const p_led_reg = (uint8_t *) 0x80000;
uint8_t const volatile* const p_latch_reg = (uint8_t *) 0x10000000;
int const volatile comm_flag;
uint8_t const volatile comm_buffer[BUFFER_SIZE];
uint8_t volatile* const p_led_reg = (uint8_t *) 0x80000;
uint8_t const volatile* const p_latch_reg = (uint8_t *) 0x10000000;
-可变易失性数据的常量地址volatile*const
-只读易失性数据const volatile
-只读易失性数据的常量地址const volatile*const
Michael Barr在Embedded.com的文章中提供了这些用法的完整描述。
volatile
和const
限定符都与实时无关。@Olaf-也许他指的是“真实世界”?关于这些限定符的使用,有三种情况;“副本”并没有真正解决这些问题(即使答案适用,也不是真正的副本)。@Clifford:推测。关于RT的含义有很多困惑。这个词甚至在商业广告中被误用。我们不是透视者。