Вопрос про именование struct
От: XJess  
Дата: 14.07.11 13:18
Оценка:
Привет всем!
Возник вопрос — зачем вот в таком, к примеру, объявлении:

typedef struct _RECTL       /* rcl */
{
    LONG    left;
    LONG    top;
    LONG    right;
    LONG    bottom;
} RECTL, *PRECTL, *LPRECTL;


указывать _RECTL? Взято из windef.h. Причем, видела в куче мест. И в одной из моих книг по Objective-C тоже все время так пишут, но при этом не объяснено, зачем. Ведь можно написать вообще без _RECTL по идее — по крайней мере, Visual Studio понимает, да и XCode тоже...
Re: Вопрос про именование struct
От: Timonn24 Россия  
Дата: 14.07.11 13:42
Оценка:
потому что pure С-стайл..
Re: Вопрос про именование struct
От: okman Беларусь https://searchinform.ru/
Дата: 14.07.11 13:56
Оценка: 2 (1)
Здравствуйте, XJess, Вы писали:

XJ>Привет всем!

XJ>Возник вопрос — зачем вот в таком, к примеру, объявлении:

XJ>
XJ>typedef struct _RECTL       /* rcl */
XJ>{
XJ>    LONG    left;
XJ>    LONG    top;
XJ>    LONG    right;
XJ>    LONG    bottom;
XJ>} RECTL, *PRECTL, *LPRECTL;
XJ>


XJ>указывать _RECTL? Взято из windef.h. Причем, видела в куче мест. И в одной из моих книг по Objective-C тоже все время так пишут, но при этом не объяснено, зачем. Ведь можно написать вообще без _RECTL по идее — по крайней мере, Visual Studio понимает, да и XCode тоже...


Этого требуют правила "чистого" С (не C++):

struct ABC
{
    int A;
    int B;
    int C;
};

typedef struct _DEF
{
    int D;
    int E;
    int F;
} DEF, *PDEF;

// Нотация в стиле "чистого" C - необходимо указывать полный тип.
int function1(struct ABC *pData)
{
...
}

// Более лаконично.
// Здесь struct указывать необязательно - DEF является псевдонимом для struct _DEF.
int function2(DEF *pData)
{
...
}
Re[2]: Вопрос про именование struct
От: se_sss  
Дата: 14.07.11 16:33
Оценка: :)
Здравствуйте, Timonn24, Вы писали:

T>потому что pure С-стайл..

Неправда.

gcc с -std=c89 и -std=c99 не ругается на
typedef struct
{
  int a;
}p;


Да и с какой стати должен это делать?
Могли просто такие guidelines быть, чтобы не делать неименованных структур.
Re: Вопрос про именование struct
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 15.07.11 06:05
Оценка:
Здравствуйте, XJess, Вы писали:

XJ>Привет всем!

XJ>Возник вопрос — зачем вот в таком, к примеру, объявлении:

XJ>
XJ>typedef struct _RECTL       /* rcl */
XJ>{
XJ>    LONG    left;
XJ>    LONG    top;
XJ>    LONG    right;
XJ>    LONG    bottom;
XJ>} RECTL, *PRECTL, *LPRECTL;
XJ>


XJ>указывать _RECTL? Взято из windef.h. Причем, видела в куче мест. И в одной из моих книг по Objective-C тоже все время так пишут, но при этом не объяснено, зачем. Ведь можно написать вообще без _RECTL по идее — по крайней мере, Visual Studio понимает, да и XCode тоже...


Например, для диагностики. Что лучше — видеть "это поле не является членом структуры _RECTL" или "это поле не является членом безымянной структуры номер 212, описанной в winapi149bx.h на строке 3498349"?
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.