gpt4 book ai didi

c - 如何在宏中为声明变量实现 ifdef?

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:36 27 4
gpt4 key购买 nike

<分区>

已解决,我找到了通过宏和宏语法声明变量的解决方案,

the declare.c is generate by other tools, so I can't modify it.

[I_VAR.c]

#define _DECLARE_VAR_I TYPE NAME;
#define _DECLARE_VAR_U
#define DECLARE_VAR(TYPE, NAME, CLASS) \
_DECLARE_VAR_##CLASS(TYPE, NAME)
#include "declare.h"
#undef _DECLARE_VAR_I
#undef _DECLARE_VAR_U

[U_VAR.c]

#define _DECLARE_VAR_I
#define _DECLARE_VAR_U TYPE NAME;
#define DECLARE_VAR(TYPE, NAME, CLASS) \
_DECLARE_VAR_##CLASS(TYPE, NAME)
#include "declare.h"
#undef _DECLARE_VAR_I
#undef _DECLARE_VAR_U

我有一个宏来声明全局变量,宏有一个语法调用“class”用于将这些声明分开到不同的 C 文件,但预处理器显示错误,因为我在宏中使用了“ifdef”。

有什么想法吗?谢谢!

(1)宏

#define DECLARE_VAR(TYPE, NAME, CLASS) \
#ifdef CLASS \
TYPE NAME; \
#endif

(2)[declare.h] 工具生成

DECLARE_VAR(int, i0, I)
DECLARE_VAR(int, i1, I)
DECLARE_VAR(int, i2, I)
DECLARE_VAR(int, u0, U)
DECLARE_VAR(int, u1, U)
DECLARE_VAR(int, u2, U)

(3)[I_Var.c]

#define I
#include "declare.h"

[U_Var.c]

#define U
#include "declare.h"

是否可以通过宏参数将变量分隔到不同的文件?

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