C宏写一个堆栈变量长度结构?

时间:2011-01-18 10:14:18

标签: c list variables macros declaration

我不知道这是否可行,但我想写一个宏 在堆栈上声明一个可变长度的结构。我想做这样的事情:

#define STATICLIST(max)       struct SStaticList { int iSize; id iObjects[max]; }

并称之为:

STATICLIST(32) Size32List
STATICLIST(64) Size64List

但是我正在重新声明类型struct SStaticList errors

2 个答案:

答案 0 :(得分:9)

你可以做类似的事情,但你需要一些东西才能避免使用相同冲突名称的结构。

#define STATICLIST(max) struct { int iSize; id iObjects[max]; }

这应该这样做。

答案 1 :(得分:1)

您可以使用令牌粘贴操作##在结构名称中包含大小:

#define STATICLIST(max)       struct SStaticList##max { int iSize; int iObjects[max]; }