gpt4 book ai didi

宏可以从其参数中删除字符吗?

转载 作者:太空狗 更新时间:2023-10-29 17:03:31 25 4
gpt4 key购买 nike

是否可以定义一个宏来删除传入的字符串参数的一部分?

例如:

//can this be defined?  
#define MACRO(o) ???

int main(){
printf(MACRO(ObjectT)); //prints "Object" not "ObjectT"
}

宏是否可以删除最后一个字符“T”?

最佳答案

您可以针对您事先知道的特定字符串执行此操作,将其作为符号而不是字符串文字呈现给宏,但对于一般符号则不这样做,根本不针对字符串文字。例如:

#include <stdio.h>

#define STRINGIFY(s) # s
#define EXPAND_TO_STRING(x) STRINGIFY(x)
#define TRUNCATE_ObjectT Object
#define TRUNCATE_MrT Pity da fool
#define TRUNCATE(s) EXPAND_TO_STRING(TRUNCATE_ ## s)

int main(){
printf(TRUNCATE(ObjectT)); // prints "Object"
printf(TRUNCATE(MrT)); // prints "Pity da fool"
}

这依赖于标记粘贴运算符 ## 来构造扩展为截断文本(或者,实际上是替换文本)的宏的名称,以及字符串化运算符, #,将扩展结果转换为字符串文字。那里也有一些必需的宏间接寻址,以确保执行所有需要的扩展。

关于宏可以从其参数中删除字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354577/

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