从'const BYTE * {aka const unsigned char *}'到'BYTE_PTR {aka unsigned char *}'的无效转换

时间:2014-05-06 04:55:23

标签: c++ casting typedef

我不知道为什么g ++编译器在编译这段代码时会给我错误:

typedef unsigned char BYTE;
typedef BYTE* BYTE_PTR;

const BYTE myByte[] = {0x00, 0xFF};
const BYTE_PTR myByte_ptr = myByte;

编译器给我这个错误:

error: invalid conversion from ‘const BYTE* {aka const unsigned char*}’ to ‘BYTE_PTR {aka unsigned char*}’ [-fpermissive]

但是这段代码没问题

const BYTE myByte[] = {0x00, 0xFF};
const unsigned char* myByte_ptr = myByte;

1 个答案:

答案 0 :(得分:1)

重复typedef pointer const weirdness

简而言之: const BYTE_PTR实际上是unsigned char* const,但不是const unsigned char*

这就是编译器抱怨的原因。