【发布时间】:2018-07-10 13:53:15
【问题描述】:
如何根据 C89 标准使用 #define 创建虚拟记录? 我试过了:
typedef struct foo{int a; int b;}foo;
#define DUMMY (foo) {.a=0, .b=0}
它运行良好,但是当我使用 -std=c89 编译时会出现很多警告。警告说这种东西只与 C99 标准兼容。谢谢大家!!
【问题讨论】:
-
你不能。 C89 既不支持复合文字也不支持指定的初始值设定项。
-
@Eugene Sh.非常感谢!
-
会创建一个命名对象,如
foo MyDummy = { 0, 0 };,然后定义宏来引用它,#define DUMMY MyDummy,是否符合您的目的? (或者,就此而言,只需定义foo DUMMY = { 0, 0 };而根本不使用宏。) -
@Eric Postpischil,非常感谢!是的,两种解决方案都适合!第二种方案是否兼容 C89?