C++ 字符串文字和常量

标签 c++ string c++11 constants constexpr

在问这个问题之前,我读过 previous question ,但问题有点不同。 我在类里面使用这个:

static constexpr char* kSuffix = "tos";

使用 gcc 和 c++11 进行编译时出现此错误:

error: ISO C++ forbids converting a string constant to 'char*' [-Werror=write-strings]

但是 constexpr 是比 const 更严格的约束,因此 constexpr 必须是 const,但是反之则不然。所以我想知道为什么 gcc 在这种情况下无法识别 constexpr

最佳答案

so a constexpr is must a const

请注意,constexprkSuffix 本身上进行了限定,因此指针变为 const(如 char* const >),但被指向者不会变成 const (如 const char*)。 Gcc 只是想告诉你,你应该将 kSuffix 声明为指向 const 的指针,即

static constexpr const char* kSuffix = "tos";

关于C++ 字符串文字和常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59745024/

相关文章:

java - 如何在 Java 中将@写成字符串

c++ - 从复制构造函数调用构造函数

c++ - << 模板类对象的运算符重载

c++ - 如何将指针值转换为 QString?

mysql - mysql 列值中的 (NULL) 和空值之间的区别

c++ - std::greater<int>() 和 std::greater<int> 之间的区别?

c++ - std::getline(std::cin) 设置故障位

c++ - 无限对象

c++ - 在 Vortex86DX 上从头开始构建和编译 GCC 5.2.0 时出错

c - "Deleting"来自 C 中的数组