gpt4 book ai didi

c - 如何使用包含宏名称的字符串获取宏的值?

转载 作者:行者123 更新时间:2023-11-30 18:26:22 30 4
gpt4 key购买 nike

是否可以使用包含 #define 名称的字符串来获取宏的值?或者编译代码后无法通过宏名称访问宏?

指出我的追求:

#define NAME "VALUE"
char string[5];

// I want the content of string to be changeable to access any define
strncpy(string, "NAME", 4);
fprintf(stderr, "%s\n", string);

我想要输出:VALUE

编辑由于 MOHAMED 的回复,我找到了这个解决方案:

#define NAME "VALUE"
char string[5];

strncpy(string, "NAME", 4);

if(strncmp(string, "NAME", 4) == 0) {
fprintf(stderr, "%s\n", NAME);
}

最佳答案

直接使用宏名称

strncpy(string, NAME, 4);

您无法编辑宏定义的字符串内容

宏在编译阶段进行评估。编译器生成第二个代码(称为预处理器代码)。此代码由编译器生成,其中编译器用其内容替换宏。

如果你的第一个代码是

#define NAME "VALUE"
char string[5];

strncpy(string, NAME, 4);
fprintf(stderr, "%s\n", string);

编译器生成的代码将是

char string[5];

strncpy(string, "VALUE", 4);
fprintf(stderr, "%s\n", string);

您可以通过以下方式查看预处理器代码:

gcc -E file.c

关于c - 如何使用包含宏名称的字符串获取宏的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901518/

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