gpt4 book ai didi

c++ - Linux 中使用三元运算符从 const char * 到 char * 的无效转换

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:41 26 4
gpt4 key购买 nike

示例1:

char* message = ( m_message != NULL ? m_message : "" );

上面的行给出了编译器错误,因为从 const char* 到 char* 的转换无效。在 g++ 编译器中。但下面的代码可以工作。

示例2:

char* message;
if(m_message)
message = m_message;
else
message = "";

为什么我在第一个示例中遇到 g++ 编译器错误,但在第二个示例中却没有?这两种方法在 Windows 中都可以正常工作。

最佳答案

字符串文字 -> char* 仅在直接转换时才允许(但不推荐) - 您不能让值“通过”其他地方以衰减为 const char*

您的第二个代码是直接从字符串文字到 char* 的转换,“仅”不推荐使用该转换。

第一个是指向 const char* 的指针衰减 - m_message != NULL 的结果? m_message :“” 是一个 const char* - 然后尝试将生成的 const char* 转换为 char*,这是不允许的。

出于同样的原因,此代码也会产生错误:

const char* empty() { return ""; }

char* message;
if(m_message)
message = m_message;
else
message = empty();

关于c++ - Linux 中使用三元运算符从 const char * 到 char * 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082702/

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