gpt4 book ai didi

c - 如何控制C宏优先级

转载 作者:行者123 更新时间:2023-12-04 04:29:50 26 4
gpt4 key购买 nike

#define VAL1CHK 20

#define NUM 1

#define JOIN(A,B,C) A##B##C

int x = JOIN(VAL,NUM,CHK);

通过上面的代码,我的期望是

int x = 20;

但是当宏扩展为时我收到编译错误

int x = VALNUMCHK; // Which is undefined

如何做到先替换NUM并使用JOIN

最佳答案

您可以将 JOIN 操作重定向到另一个宏,然后由该宏执行实际的粘贴操作,以强制扩展其参数:

#define VAL1CHK 20
#define NUM 1
#define JOIN1(A, B, C) A##B##C
#define JOIN(A, B, C) JOIN1(A, B, C)

int x = JOIN(VAL,NUM,CHK);

此技术通常与宏中的粘贴和字符串化运算符一起使用。

关于c - 如何控制C宏优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30999059/

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