C++11给出错误:无法转换,但C++14不能

qltillow  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(120)

为什么这段代码在C11时会给予错误?在C〉11时,它编译得很好。我做错了什么?

typedef void (*cmdH)(const char* args, const uint8_t argCnt);

struct CMDList {
    char* cmd = nullptr; /**< @brief Command C-string. */
    cmdH cmdHandler = nullptr; /**< @brief Pointer to command function. See \ref cmdH */
};

CMDList list[2] =
{
    { "test", nullptr },
    { "hello", nullptr }
}; // ERROR HERE

错误:无法将'{“test”,nullptr}'从''转换为'CMDList'
我正在使用https://www.onlinegdb.com/online_c++_compiler测试我的代码

ars1skjm

ars1skjm1#

这是可行的。问题是结构声明中的默认值。另外,char*应该是const char*

struct CMDList {
    const char* cmd; /**< @brief Command C-string. */
    cmdH cmdHandler; /**< @brief Pointer to command function. See \ref cmdH */
};

相关问题