我不知道这是否可行,但我想写一个宏 在堆栈上声明一个可变长度的结构。我想做这样的事情:
#define STATICLIST(max) struct SStaticList { int iSize; id iObjects[max]; }
并称之为:
STATICLIST(32) Size32List
STATICLIST(64) Size64List
但是我正在重新声明类型struct SStaticList errors
答案 0 :(得分:9)
你可以做类似的事情,但你需要一些东西才能避免使用相同冲突名称的结构。
#define STATICLIST(max) struct { int iSize; id iObjects[max]; }
这应该这样做。
答案 1 :(得分:1)
您可以使用令牌粘贴操作##在结构名称中包含大小:
#define STATICLIST(max) struct SStaticList##max { int iSize; int iObjects[max]; }