2009-07-27 5 views
7

Я работаю в библиотеке, которые широко используются конструкции, каксхема присвоения имен для определений типов

typedef struct foo_bar_s { 
    ... 
} foo_bar_t; 

Это плохая идея использовать суффикс _t, потому что это POSIX зарезервировано пространство имен. Суффикс _s для структур также довольно бесполезен. Так я думал, что я могу изменить все это

typedef struct foo_bar { 
    ... 
} foo_bar; 

или если имя структура не требуется

typedef struct { 
    ... 
} foo_bar; 

Однако, я не могу отличить от обычных определений типов символов (переменных и т.д.) больше. Разве это действительно так важно, и я должен использовать другую подходящую схему именования для typedefs? Или это не так важно?

Я действительно не так уверен. Как вы думаете? Кроме того, какие рекомендации вы имеете для схем именования typedef?

ответ

8

Хотя «_t» зарезервировано, очень маловероятно, что вы столкнулись с проблемой. Однако, это соглашение является пережитком старых версий C, где этот синтаксис требовались для того, чтобы имя структуры, и поэтому в настоящее время вы можете просто написать что-то вроде следующего (опуская ЬурейиЙ и имена TYPEDEF):

 
struct name_of_struct 
{ 
    type1 member1; 
    type2 member2; 
    // ... 
    typeN memberN; 
}; 

И да, вы можете использовать однострочные комментарии («// ...») в текущем стандарте C.

+6

_t действительно зарезервировано POSIX –

+0

Теперь, когда два человека сказали это. Я дважды проверял, и получается, что вы правы. Я собираюсь это исправить. –

+4

_t не зарезервирован POSIX в том смысле, что никто не может использовать такие имена. Вместо реализаций POSIX могут использоваться только имена типов этой формы. – starblue

5

Я использую соглашения об именах, используемые в Dave Hanson's C Interfaces and Implementations: имя типа с именем модуля и капитал T. Так, например, тип последовательностей - Seq_T, а тип хэш-таблиц - Table_T. В рамках внедрения модуля Hanson использует #define для сокращения только до   T. Это в основном Modula-3 конвенций, применяемых к программированию на С, но я нахожу, что после короткого начального шока это работает хорошо.