我正在阅读Stroustrup的c ++ FAQ,我注意到,在某一点上,他在语言中有一个 writeonly 限定符。经过一番讨论,一位同事和我只能提出一个目的 - 副作用,特别是在一些内存映射IO的情况下。是否有 writeonly 限定符的其他合法用法?
答案 0 :(得分:4)
write-only
限定符对硬件寄存器很有用,因为从write-only
寄存器读取会导致未定义的行为或细微的运行时错误。您可以使用#define
等#define write-only
,然后将其应用于special_register write_only UTXBUF;
EE Times上有How to Enforce write-only access的博文。
答案 1 :(得分:4)
它在C ++ AMP,GPGPU语言扩展中卷土重来,用于告诉运行时他们不必将某些缓冲区从主机复制到设备。
答案 2 :(得分:3)
对于许多类型的硬件接口非常有用,它们不允许读取计算机的输出,或者输入是状态,输出是控制等。
在我的设备驱动程序写日中,这在硬件设计中经常发生。 20世纪70年代硬件添加缓冲区相对昂贵,缓冲区可以读回最后写入的缓冲区,或者在与输出寄存器相同的地址处有一个节省成本的接口,返回设备的其他内容。在重要的时间和地点,驱动程序必须维护写入的最后一个值的副本,例如,如果更新实际上会导致状态更改。