reinterpret_cast 从类型 'const char*' 到类型 '__FlashStringHelper*' 放弃限定符
reinterpret_cast from type 'const char*' to type '__FlashStringHelper*' casts away qualifiers
我想在 AVR Studio 中使用 Adafruit_CC3000 arduino 库。我已经按照 this Instruction to use Adafruit arduino lib with AVR studio 所以我也可以使用其他 AVR 功能。但是我在编译代码时遇到了 50 次相同的错误。
Error 5 reinterpret_cast from type 'const char*' to type
'__FlashStringHelper*' casts away
qualifiers E:\arduino-1.0.1\libraries\Adafruit_CC3000\Adafruit_CC3000.cpp 183 3 ATmega32_WSClient_CC3K
我在网上搜索过此类错误。但我不明白这个问题。我要求让我了解此代码中的哪些内容会导致此错误?
reinterpret_cast
可以在不相关的指针类型之间进行转换,但不能删除 const
或 volatile
限定符。为此你需要 const_cast
。
选项是(大致按照肮脏程度递增的顺序):
- 首先不要使用错误的指针类型;
- 转换为
const __FlashStringHelper*
,如果不需要修改对象;
- 从
char*
投射如果你确实需要修改它;
- 如果您坚持完全放弃类型系统,请使用
reinterpret_cast<__FlashStringHelper*>(const_cast<char*>(whatever))
或蛮力 (__FlashStringHelper*)whatever
。
我想在 AVR Studio 中使用 Adafruit_CC3000 arduino 库。我已经按照 this Instruction to use Adafruit arduino lib with AVR studio 所以我也可以使用其他 AVR 功能。但是我在编译代码时遇到了 50 次相同的错误。
Error 5 reinterpret_cast from type 'const char*' to type '__FlashStringHelper*' casts away qualifiers E:\arduino-1.0.1\libraries\Adafruit_CC3000\Adafruit_CC3000.cpp 183 3 ATmega32_WSClient_CC3K
我在网上搜索过此类错误。但我不明白这个问题。我要求让我了解此代码中的哪些内容会导致此错误?
reinterpret_cast
可以在不相关的指针类型之间进行转换,但不能删除 const
或 volatile
限定符。为此你需要 const_cast
。
选项是(大致按照肮脏程度递增的顺序):
- 首先不要使用错误的指针类型;
- 转换为
const __FlashStringHelper*
,如果不需要修改对象; - 从
char*
投射如果你确实需要修改它; - 如果您坚持完全放弃类型系统,请使用
reinterpret_cast<__FlashStringHelper*>(const_cast<char*>(whatever))
或蛮力(__FlashStringHelper*)whatever
。