我讨厌定义。为了从旧代码库中尽可能多地消除它们,我需要依靠 enum-hack 来定义包含数组的结构。不幸的是,当 C 项目包含有罪的 .h 文件时,我没有让它编译。
typedef struct _P_O {
enum { MAXELEMENTS=10 };
P_O_U elem;
ULONG id[MAXELEMENTS];
USHORT nid;
} P_O, *PP_O;
这会产生错误 C2208 :
OT:我讨厌使用一个 10 岁的编译器,不得不维护旧的 c 代码和糟糕的设计;不只是定义:)
最佳答案
鉴于问题中的代码,GCC 警告:枚举行的 warning: declaration does not declare anything
。
将枚举放在结构之外,你会没事的。
typedef int P_O_U;
typedef unsigned long ULONG;
typedef unsigned short USHORT;
enum { MAXELEMENTS = 10 };
typedef struct _P_O
{
P_O_U elem;
ULONG id[MAXELEMENTS];
USHORT nid;
} P_O, *PP_O;
关于c - 枚举 hack 在 C 中工作吗?如果是这样,它是否应该在 VisualStudio 2003 中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17997845/