gpt4 book ai didi

c++ - constexpr 函数返回字符串文字

转载 作者:可可西里 更新时间:2023-11-01 18:26:32 33 4
gpt4 key购买 nike

返回整型文字拷贝的函数

int number()
{ return 1; }

可以使用关键字 constexpr 轻松转换为普通的编译时表达式。

constexpr int number()
{ return 1; }

但是,当涉及到字符串文字时,我感到很困惑。通常的方法是返回指向字符串文字的 const char 的指针,

const char* hello()
{ return "hello world"; }

但我认为仅仅将“const”更改为 constexpr 并不是我想要的(作为奖励,它还会产生编译器警告 deprecated conversion from string constant to 'char*' 使用 gcc 4.7.1)

constexpr char* hello()
{ return "hello world"; }

有没有一种方法可以实现 hello(),在下面的例子中用常量表达式替换调用?

int main()
{
std::cout << hello() << "\n";
return 0;
}

最佳答案

constconstexprnot interchangeable ,在你的情况下你不想删除 const 但你想像这样添加 constexpr :

constexpr const char* hello()
{
return "hello world";
}

当您删除 const 时收到的警告是因为 string literal 是一个 n const char 数组,因此是指向string literal 应该是 *const char ** 但在 Cstring literal 是一个 char 数组,即使它是未定义的行为尝试修改它们是为了向后兼容而保留的,但已贬值,因此应该避免。

关于c++ - constexpr 函数返回字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22548991/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com