2015-06-25 4 views
1

У меня есть образец кода для микроконтроллера.typedef синтаксис с определением структуры

Существует структура typedef d, как показано ниже.

typedef struct _AT91S_SYS { 
    AT91_REG  AIC_SMR[32]; // Source Mode Register 
    AT91_REG  AIC_SVR[32]; // Source Vector Register 
    AT91_REG  AIC_IVR; // IRQ Vector Register 
    ... 
} AT91S_SYS, *AT91PS_SYS; 

Я использовал typedef с как } AT91S_SYS; структур.

Что делает эта дополнительная деталь? *AT91PS_SYS; in } AT91S_SYS, *AT91PS_SYS;
Является ли он указателем на тип struct _AT91S_SYS?

AT91_REG является typedef из volatile unsigned int

ответ

3

Да, вы правы, синтаксис эквивалентен следующему:

typedef struct _AT91S_SYS AT91S_SYS; 
typedef struct _AT91S_SYS *AT91PS_SYS; 

Так AT91PS_SYS тип указатель AT91S_SYS.

4

Это просто определяет тип AT91PS_SYS как указатель на AT91S_SYS.


Самый простой способ понять typedef, кстати, чтобы прочитать остальную часть декларации, как если бы это было только объявление переменной. Но вместо определения переменных вы определяете типы, используя любой тип, который переменная имела бы.

Так, например,

int x, *y, z[5]; 

определяет три переменные, int x, int *y и int z[5].

Поэтому

typedef int x, *y, z[5]; 

определяет два типа, x == int, y == int * и z == int[5]. Просто!

Смежные вопросы