在f1.h头文件中使用 typedef 作为结构。示例代码片段如下所示
typedef struct{
int a;
union u
{
int x;
char y;
}xyz;
}mystruct;
在f2.h头文件中使用结构mysturct来获取偏移量。代码片段如下所示
static mystruct ktt
//#define OFFSET_T(b, c) ((int*)((&((mystruct*)0)->b)) - (int*)((&((mystruct*)0)->c)))
#define OFFSET_T(b, c) ((char*) &ktt.b - (char *) &ktt.c)
static struct Mystruct1{
int n;
}mystruct1 = {OFFSET_T(xyz,a)};
当我在AIX机器上使用xlc编译器进行编译时,它会抛出错误,因为“1506-221(S) Initializer must be a valid constant expression”。
我尝试了两个宏,但都得到了相同的错误。f2.h 宏在执行结构大小以获取偏移量时有什么问题吗?