switch case报错

昨晚在写代码的时候,发现switch 下的case  语句有的加了{},有的却没加,但是当我在  case下面的条件语句增加  变量定义的时候  如果不加{},就会报错!

正如下面代码因为定义了stringstream  流类型,所以必须要增加{}

否则报错 

error: jump to case label [-fpermissive]

error:   crosses initialization of ‘int str_len’

switch(val->type) {
                        case REDIS_REPLY_STRING:
                            valPtr = new char[val->len];
                            memcpy(valPtr, val->str, val->len);
                            values.push_back(valPtr);
                            valueslen.push_back(val->len);
                            break;
                        case REDIS_REPLY_INTEGER: {
                            std::stringstream ss;
                            ss << val->integer;
                            valPtr = new char[ss.str().size()];
                            memcpy(valPtr, ss.str().c_str(), ss.str().size());
                            values.push_back(valPtr);
                            valueslen.push_back(ss.str().size());
                            break;
                        }

  

原文地址:https://www.cnblogs.com/lthuang/p/11847617.html