gpt4 book ai didi

c - 宏解析地址

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:46 24 4
gpt4 key购买 nike

#define PLAINTEXT_TARGET "plaintext"
if( strstr(PLAINTEXT_TARGET, optarg) == PLAINTEXT_TARGET )
/* ... */

C语言能保证上面的PLAINTEXT_TARGET编译成一个实例吗?如果编译器可能会生成宏字符串的两个实例,则上述条件具有误导性并且可能为假。

最佳答案

宏做简单的文本替换。预处理器将每次出现的 PLAINTEXT_TARGET 替换为 “plaintext”,之后编译器查看结果并进行编译。

因此编译器会看到两个字符串文字,并且不能保证它们不会被单独存储(请参阅 Alok 的回答以获取标准中的相应引用)。该代码确实具有误导性,将 PLAINTEXT_TARGET 声明为常量会更合理:

const char* const PLAINTEXT_TARGET = "plaintext";

关于c - 宏解析地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1998119/

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