【发布时间】:2023-04-01 20:24:02
【问题描述】:
一个简单的 C++ 代码:
int main(){
unsigned char* t="123";
}
使用 g++ 编译时出现以下错误:
invalid conversion from ‘const char*’ to ‘unsigned char*’ [-fpermissive]
为什么?
【问题讨论】:
-
因为字符串字面量是 const。
-
谢谢。那么如何解决呢?除了使用 std::string
-
是的,如果它是字符串文字,gcc 不会给出错误。
-
如果您的意思是使用 C 编译器不会产生错误,那(部分)是因为在 C 中,
"123"的类型为char[4],而在 C++ 中的类型为const char[4]。 gcc ,如果不在标准模式下调用,也允许在char *和unsigned char *之间进行转换而无需强制转换 -
const unsigned char* tmp= reinterpret_cast<const unsigned char *>( "123" ); t = const_cast<unsigned char *>(tmp).
标签: c++ casting type-conversion