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 可以在不相关的指针类型之间进行转换,但不能删除 constvolatile 限定符。为此你需要 const_cast

选项是(大致按照肮脏程度递增的顺序):

  • 首先不要使用错误的指针类型;
  • 转换为const __FlashStringHelper*,如果不需要修改对象;
  • char*投射如果你确实需要修改它;
  • 如果您坚持完全放弃类型系统,请使用 reinterpret_cast<__FlashStringHelper*>(const_cast<char*>(whatever)) 或蛮力 (__FlashStringHelper*)whatever