来自类型' const char *'的reinterpret_cast输入' __ FlashStringHelper *'抛弃了资格赛

时间:2015-01-26 11:56:38

标签: c++ avr avr-studio6

我想在AVR Studio中使用Adafruit_CC3000 arduino库。我已经按照this指令使用Adafruit arduino lib和AVR studio,所以我也可以使用其他AVR功能。但是当我编译代码时,我得到了相同的错误50次。

  

错误5从'const char *'类型reinterpret_cast到type   '__FlashStringHelper *'被抛弃了   限定符E:\ arduino-1.0.1 \ libraries \ Adafruit_CC3000 \ Adafruit_CC3000.cpp 183 3 ATmega32_WSClient_CC3K

我在网上搜索过这种错误。但我没理解这个问题。我请求让我理解这段代码中的哪一项产生了这个错误?

1 个答案:

答案 0 :(得分:12)

reinterpret_cast可以在不相关的指针类型之间进行转换,但无法删除constvolatile限定符。你需要const_cast

选项(大致按照增加的肮脏程度):

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