gpt4 book ai didi

c - 如何在 C 预处理器中使用 '##' 添加整数?

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

#include<stdio.h>

#define DEF6 625
#define DEF6 625
#define DEF(n) DEF##n

void main(){
printf("%d\n", DEF(6));
}

此代码有效。但是

#include<stdio.h>

#define DEF6 625
#define DEF(n) DEF##n

void main(){
int a=6;
printf("%d\n", DEF(a));
}

此代码无效。错误结果是这样的

Line 8: error: 'DEFa' undeclared (first use in this function)
Line 8: error: (Each undeclared identifier is reported only once
Line 8: error: for each function it appears in.)

那么如何使用##将Integer类型变量添加到#define

最佳答案

宏不会在运行时求值,您传递给宏的参数按字面意思使用,因为“它未求值”。你想做的事情很容易用数组来实现。当有简单易行的解决方案时,不要试图强行采用错误的方法。

由于 a 未被评估,如果您传递 a 则使用 a

DEF(a)

替换为 DEFa

这样做

#include <stdio.h>

static const int DEF[] = {[6] = 625};

int
main(void)
{
int a = 6;
printf("%d\n", DEF[a]);
}

关于c - 如何在 C 预处理器中使用 '##' 添加整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35413445/

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