作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在编写一个函数作为 Boost.Interprocess 实验的一部分。在函数中,我将字符串文字分配给声明为 constexpr char*
的变量。当我这样做时,我得到:
警告:不赞成从字符串常量到 char* [-Wwrite-strings] 的转换
。
我对 constexpr
的理解是,在变量声明中,它的行为就好像变量被声明为 const
一样,但增加了必须初始化变量的规定,并且该初始化必须使用常量表达式。
基于这种理解,我希望 constexpr char*
的行为与 const char*
相同,因此不会发出警告。我是否遗漏了一些有关 constexpr
工作原理的信息?
我正在使用 -std=c++0x 使用 GCC 4.6.0 20110306 进行编译。
对于发出警告的任何理由,我们将不胜感激。谢谢!
最佳答案
constexpr
中的 const
将使您的变量 char* const
。
您仍然遇到字符串文字是 const char
并且允许将其地址转换为 char*
的问题,但已弃用。
关于c++ - constexpr 和弃用的转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5287566/
我是一名优秀的程序员,十分优秀!