gpt4 book ai didi

c++ - 为什么三元运算符 const 我的字符串?

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:40 24 4
gpt4 key购买 nike

我正在为由 ATmega328 驱动的图形 LCD 编写一些代码,使用 Arduino 构建链和 Stino 作为我的 IDE。我有一个格式化和显示带有标签的数字的功能。这是函数:

void displayNumber(float value, char* label)

我意识到这两个参数都可以const,但是为了保持与其他代码的兼容性,它们是这样的。

如果我按如下方式调用该函数:

displayNumber(externalTemp, "MAX");

它工作正常。我理解字符串文字的行为很奇怪,因为它们不能被修改(未定义的行为)但它们没有声明为 const char* 而是 char*

如果我尝试使用三元运算符将参数传递给函数:

displayNumber(externalTemp, animate10s?"MAX":"MIN");

我得到一个编译器错误:

invalid conversion from 'const char*' to 'char*'

为什么三元运算符const我的字符串?

具体使用的编译器是avr-gcc/avr-g++ version 4.3.2,与Arduino Beta 1.5.6-r2捆绑。

最佳答案

存在(或直到最近)从字符串文字到 char *(没有它通常具有的 const)的弃用转换,这就是让简单调用起作用的原因。

三元表达式不是字符串文字,因此无法对其应用转换。

(您最好的解决方案是确保函数参数被正确声明为 const char *。)

关于c++ - 为什么三元运算符 const 我的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22296811/

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