Мой основной язык программирования, j, был недавно открытым. Чтобы улучшить его, я изучаю источник, который написан на C.
Но это было длинное (!) время с тех пор, как я прочитал или написал C, и тогда я даже не был хорош в этом. И то, как написано эту конкретную кодовую базу, является... особенным (многие интерпретаторы APL, среди них J, имеют свой источник, написанный на высоком уровне "стиль APL", даже когда они написаны на языке низкого уровня, очень кратки, избыточность избегана, использование тяжелых макросов и т.д.)
В настоящий момент я пытаюсь понять основные структуры данных, которые он использует. Наиболее фундаментальным является typedef A
( "A" для "array" )
typedef struct {I k,flag,m,t,c,n,r,s[1];}* A;
который я понимаю. Но я изо всех сил пытаюсь обернуть голову тем, что AF
, две строки позже:
typedef A (*AF)();
Что означает этот синтаксис? В частности, что это значит, когда вещи позже объявляются как "тип AF"? Является ли AF
просто указателем на A
?
Моя ближайшая цель - интерпретировать дампы памяти, которые включают вещи type V
(для "verb" ), чьи первые два члена AF
s:
typedef struct {AF f1,f2;A f,g,h;I flag,mr,lr,rr,fdep;C id;} V;
но моя общая цель больше, поэтому, пожалуйста, уточните синтаксис, используемый в определении AF.