【发布时间】:2015-06-09 23:41:01
【问题描述】:
在这一行中是否进行了任何类型的转换(隐式、显式):
int *p= "hello there";
此外,从 C/C++ 的角度来看,这种说法的正确性是什么?
注意:它在 AVR-GCC 上编译,在其他编译器上失败。
【问题讨论】:
-
错误:无法使用“const char [12]”类型的左值初始化“int *”类型的变量
-
@aslg 如果您知道如何正确操作,您可以这样做。事实上,这些东西在实践中被使用是有正当理由的。
-
除非需要,否则不要这样做。像这样的事情在测试期间需要数周或更长时间才能发现,并可能导致未定义的行为。创建类型系统是有原因的。
-
@chris 此代码在 AVR-GCC 上编译。至于题外话,这个问题的目标是了解这样一行正在执行什么功能以及为什么它在 AVR-GCC 上编译。
-
@OAH 尝试在标准模式下调用您的编译器。 (对于 gcc 使用
-pedantic和-std开关,不确定 avr-gcc 是否完全相同)