键入将volatile列表转换为寄存器char类型

时间:2011-08-22 09:45:34

标签: casting char type-conversion volatile

我处在一种情况,我的C代码中会收到额外的警告。

警告#2513-D:“volatile char *”类型的值不能分配给“char *”类型的实体A = B;

当我检查我的代码时,我发现A和B的定义如下:

register char *A;
extern volatile char *B;

任何人都可以建议我如何键入强制转换忽略上述警告。如果我输入铸造,是否有任何不良影响或副作用。我不想更改A的声明,虽然它工作正常并删除警告。但是更改A的声明将对我的代码产生重大影响。

请提出一些建议。

由于 Goldi

1 个答案:

答案 0 :(得分:0)

可以忽略register关键字。 你可以像

一样投射
A = (char *) B;

抛弃volatile意味着一些优化(当使用A的新值时)可能导致使用陈旧值,而使用B的相同计算将产生不同的(并且可以说是更好的)结果。 假设我们正在谈论C. C ++是相似的,但不完全相同的AFAIK,即使它在这种情况下无关紧要。