C макросом писать структуру переменной длины стека? - PullRequest
0 голосов
/ 18 января 2011

Я не знаю, возможно ли это, но я хотел бы написать макрос, который объявляет структуру переменной длины в стеке.Я хочу сделать что-то вроде этого:

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

и вызвать его так:

STATICLIST(32) Size32List
STATICLIST(64) Size64List

Но я получаю повторную декларацию типа struct SStaticList ошибки

Ответы [ 2 ]

9 голосов
/ 18 января 2011

Вы могли бы сделать что-то подобное, но вам нужно что-то, чтобы избежать структур с таким же конфликтующим именем.

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

это должно сделать это.

1 голос
/ 18 января 2011

Вы можете использовать операцию вставки токена ##, чтобы включить размер в имя структуры:

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