【问题标题】:D type qualifier is meaningless on cast typeD 类型限定符对强制类型转换没有意义
【发布时间】:2020-08-29 15:14:02
【问题描述】:

"D type qualifier is nothing on cast type at this line of code"是什么意思

    (*((volatile RCC_t * const)0x400FE060)).USESYSDIV = 1;

如何解决?

【问题讨论】:

  • 只有两个类型限定符,volatileconst。一个是无意义的,可以/应该删除。
  • @FiddlingBits: restrict_Atomic 也是限定符。
  • @EricPostpischil 对不起,我的意思是在 OP 的声明中。

标签: c eclipse arm embedded cortex-m


【解决方案1】:

volatile RCC_t * const 表示指针(不是它指向的东西)是const。但这是针对 value 的,它只是表达式中使用的结果。像const 这样的限定符是内存中objects 的属性。所以在这个演员阵容中没有任何作用。

【讨论】:

    【解决方案2】:

    这里的问题是const,它表示指针 本身不会改变。但是既然是表达式的值,那么根据定义它是不能改变的,它只是

    这与将42 转换为const unsigned char 相同:

    printf("%hhu", (const unsigned char)42);
    

    但是42 的值怎么会改变呢?

    【讨论】:

    • 关于“怎么……42 的值怎么会改变?”:添加volatile。然后它可以以编译器未知的方式改变,就在表达式的中间。 ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2018-10-27
    • 2017-06-22
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多