Я начну с каталогизации того, что я знаю, чтобы отличить guish от того, что я хочу:
- Я могу объявить «шаблон» для структуры через `typedef struct astruct ... '
- Я могу объявить экземпляр структуры в глобальном или локальном хранилище через
astruct mystruct;
- Я могу объявить указатель на структуру через
astruct *pmystruct;
, а затем установить значение этого указателя на экземпляр через pmystruct = &mystruct;
Я хотел бы сделать что-то противоположное # 3: я хотел бы объявить экземпляр структуры, которая определяется как адресуемый конкретным указателем ... что-то вроде:
astruct *pthestruct;
astruct thestruct referencedby(pthestruct);
Тогда мне не нужно было бы префикс любой ссылки на поле в структуре с pthestruct -> thestruct.structdataitem
Это достигается в PL / I с помощью атрибута BASED
в объявлении:
DCL PTHESTRUCT POINTER;
DCL 1 THESTRUCT BASED(PTHESTRUCT),
3 ... (rest of the structure) ;
В коде все ссылки на THESTRUCT будут неявно «базироваться» на адресе в PTHESTRUCT
, так же как если бы я закодировал PTHESTRUCT -> THESTRUCT
.
Идеи?
Спасибо, Скотт * 10 30 *