gpt4 book ai didi

c - #定义一个字符串文字,然后将其分配给一个字符*

转载 作者:行者123 更新时间:2023-12-02 06:01:09 25 4
gpt4 key购买 nike

#define MAXSTR "Maximum number reached"

char *str = MAXSTR;

在做这种操作的时候。代码运行良好,但出现 lint 错误。我该如何解决?
Error:
Assignment of string literal to variable

如果我使用:
 #define MAXSTR "Maximum number reached"

char *str = (char *) MAXSTR;

然后 lint 错误:
Attempt to cast away const (or volatile)

最佳答案

宏是代码片段的名称。无论名称出现在源文件中的何处,它都会被代码片段替换。宏定义是 C 预处理器的指令。它们不是声明,因为它们不是 executed .它们甚至在预处理阶段之后都不存在,因此不会生成汇编代码。
MAXSTR是一个被字符串文字 "Maximum number reached" 替换的宏.字符串文字是只读的,尝试修改它们是未定义的行为。因此,您应该使指针const合格的。

#define MAXSTR "Maximum number reached"

const char *str = MAXSTR; // make the pointer const

关于c - #定义一个字符串文字,然后将其分配给一个字符*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23195960/

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