我讨厌定义。为了从旧代码库中尽可能多地消除它们,我需要依靠 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/

10-15 00:34