gpt4 book ai didi

c - 由于 #define 导致 Aix 编译错误

转载 作者:行者123 更新时间:2023-11-30 21:01:37 24 4
gpt4 key购买 nike

“1506-221 (S) 初始化程序必须是有效的常量表达式。”

在aix中编译头文件期间我遇到了这个问题。

在头文件中,源代码如下

#define A(b) (a+b)

就这样。

无论在源代码中使用此宏“A”(例如:A(5)),它都会引发上述错误。

谁能帮我解决这个问题吗?

编辑:

在头文件中

#define A(b) (a+b)

在源文件中

struct a
{
int a;
int b;
} ain = {10, A(10)};

像这样。

最佳答案

您无法使用非常量值初始化结构,在这种情况下,您正在使用我认为的结构字段之一,但因为它是您的宏甚至不知道,因为 a实际上并没有定义任何东西,请尝试这个

#define INIT_STRUCT(x, a, b) do {x->a = a; x->b = x->a + b} while (0);

像这样使用它

struct a {int a; int b;};
INIT_STRUCT(&a, 10, 10);

注意:但是请不要这样做,而是像这样初始化

a.a = 10;
a.b = a.a + 10;

或者如果您需要初始化其中许多,请编写一个函数。

关于c - 由于 #define 导致 Aix 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35271568/

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