带初始化问题的C结构定义

带初始化问题的C结构定义,c,C,我在一个旧的基准测试周长中看到了这个struct定义: typedef struct quad_struct { Color color; ChildType childtype; #ifndef TORONTO struct quad_struct *nw {50}; struct quad_struct *ne {50}; struct quad_struct *sw {50}; struct quad_struct *se {50}; struct quad_

我在一个旧的基准测试
周长
中看到了这个
struct
定义:

typedef struct quad_struct {
  Color color;
  ChildType childtype;

#ifndef TORONTO
  struct quad_struct *nw {50};
  struct quad_struct *ne {50};
  struct quad_struct *sw {50};
  struct quad_struct *se {50};
  struct quad_struct *parent {50};
#else
  struct quad_struct *nw;
  struct quad_struct *ne;
  struct quad_struct *sw;
  struct quad_struct *se;
  struct quad_struct *parent;
#endif

} quad_struct, *QuadTree;
(您可以在以下位置找到代码:)

什么是
struct quad_struct*nw{50}做什么?它看起来像是初始化指向常量值的指针。
我尝试用现代编译器编译这类代码,例如LLVM10或GCC9,但我得到了编译错误

错误:应为“;”在声明列表的末尾,struct quad_struct*nw{50}

有关旧基准的更多信息,请参见: 主要是:

编译旧的基准测试是为了测试CM5的旧C*编译器


您需要使用与项目相同的标志进行编译。特别是,在makefile中可能有类似于
-std=c99
的内容。在makefile中定义了TORONTO,因此不使用第一部分。CPPFLAGS=-DTORONTOI试图查看makefile,以查看是否缺少一些模糊的案例,但多伦多是无条件定义的。我看不出一个简单的方法来得到答案,除非把它留下,并希望有人能认识到这种非标准语法。@PtitXav谢谢你指出这一点。但我问这个问题的目的是想弄清楚语法的含义,而不是为什么它会在基准测试套件中编译。@MadPhysicast仅供参考我试过
-std=c99
,但仍然出现编译错误。