C приведение синтаксиса и typedef - PullRequest
2 голосов
/ 11 июля 2011
Синтаксис объявления

C довольно запутанный ...

Что подводит меня к моему вопросу о синтаксисе приведения,

Простые типы достаточно просты, просто поместите тип в скобки.Но как насчет таких типов, как

int (*2Dap) [5]; или double (*fp) (double, double);

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

Итак, int (*2Dap) [5]; становится ( int (*) [5] ), а char * str; становится просто (char *)

Это общее правило?

Как так typedef, ваш новый "тип" будет вашей переменной в объявлении typedef, например

.typedef double (*twoINoneOUT) (double, double); «twoInoneOUT» будет вашим новым «типом».

Правильно ??

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

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Полагаю, здесь правило состоит в том, чтобы просто убрать идентификатор (плюс точку с запятой) объявления нормальной переменной и поместить его в скобки.

Верно.Здесь объявляется переменная с именем x:

int (*x)[5];

Тип переменной - int (*)[5], и вы можете привести к этому типу, используя приведение (int (*)[5]).

Таким образом, typedef, ваш новый «тип» будет тем, что является вашей «переменной» в объявлении typedef,

Также правильно.Это объявляет псевдоним типа с именем t:

typedef int (*t)[5];

Синтаксически, typedef появляется в том же месте, что и спецификатор класса хранения, как static.

0 голосов
/ 11 июля 2011

Это может быть полезно:

http://www.unixwiz.net/techtips/reading-cdecl.html

и это может быть полезно для того, что выглядит как полная тарабарщина

http://cdecl.org/

...