类型 将 volatile char 转换为寄存器 char 类型
我的 C 代码中收到额外警告。
警告 #2513-D:“volatile char *”类型的值不能分配给“char *”类型的实体 A = B;
当我检查我的代码时,我发现 A 和 B 的定义如下:
register char *A;
extern volatile char *B;
任何人都可以建议我如何输入强制转换来忽略上述警告。如果我进行类型转换,是否会有任何不良影响或副作用?我不想更改 A 的声明,尽管它工作正常并删除了警告。但是更改 A 的声明将对我的代码产生重大影响。
请建议一些方法。
谢谢 戈尔迪
I am in a situation where i am getting an extra warning in my C code.
warning #2513-D: a value of type "volatile char *" cannot be assigned to an entity of type "char *" A = B;
when i checked my code i found that A and B are defined like:
register char *A;
extern volatile char *B;
Can anyone please suggest me how do i type cast to ignore the above warning. Is there any bad impact or side effect if i do type casting. I dont want to change the declaration of A, though it works fine and remove the warning. But changing the declaration of A will have major impact in my code.
Please suggest some way.
Thanks
Goldi
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
寄存器关键字可以忽略。
您可以像
抛弃
易失性
一样进行强制转换,这意味着某些优化(当使用 A 的新值时)可能会导致使用过时的值,而使用 B 进行相同的计算会产生不同的(并且可以说更好) ) 结果。假设我们谈论的是 C。C++ 是相似的,但据我所知并不完全相同,即使在这种情况下它不重要。
The register keyword can be ignored.
You could cast like
Casting away the
volatile
means that some optimizations (when using the new value of A) could lead to stale values being used, whereas the same computation using B would produce a different (and arguably better) result.Assuming we're talking about C. C++ is similar, but not quite identical AFAIK, even if it shouldn't matter in this case.