стандартная структура для заголовка C и исходных файлов - PullRequest
0 голосов
/ 01 июля 2010

Существует ли какая-либо стандартизированная структура исходных и заголовочных файлов C?

Я думаю о чем-то вроде этого (пример для исходного файла C): </p> <p>// static variables </p> <p>// public variables</p> <p>// static methods</p> <p>// public methods</p> <p>

Ответы [ 4 ]

1 голос
/ 01 июля 2010

Я обычно использую следующее для c:

// include guard
#ifndef <filename>_H
#define <filename>_H

// define this as extern for c++
#ifdef __cplusplus
extern "C" {
#endif

#include <libraries>
#define  <preproc variables>
#define  <preproc macros>

enum <enums> {
};

typedef <variables>;
typedef <structs>;

function prototypes();

// end c++ guard
#ifdef __cplusplus
}
#endif 
// end include guard
#endif
1 голос
/ 01 июля 2010

Учитывая, что это вопрос C, я предполагаю:

// static variables
// public variables
// static methods
// public methods

... означает:

// static variables
// public variables (external linkage)
// static functions
// public functions

Что касается порядка, я не думаю, что вы можете вызватьничего кроме субъективного ответа по этому поводу.Это, конечно, не стандартизировано, если вы не спрашиваете о стандартах кодирования конкретной организации, в этом случае у них могут быть политики по этому поводу.Некоторые могут предпочесть рядовых перед публикой, другие - перед рядовыми.Некоторые могут поставить один перед другим, чтобы подчеркнуть важность одного над другим, в то время как другие могут поставить его после, чтобы подчеркнуть важность перед своим предшественником.Нет единодушного согласия в отношении таких стилевых предпочтений, и они не оказывают никакого логического влияния на код или его поведение во время выполнения.

Важно быть последовательным, и я бы рекомендовал избегать чего-то очень экзотического, так как это пугаетпрочь другие разработчики, которые должны смотреть на ваш код.Экзотические стили обычно плохи, если вы хотите работать с другими инженерами.Чем более экзотическими становятся стили, тем более уникальными они становятся, тем больше они требуют от других приспособления к личным предпочтениям.

Старайтесь сократить количество открытых переменных с помощью внешней связи (глобальных переменных).Какая бы небольшая разница не показалась, это большой шаг для написания публичной функции для извлечения переменной, даже если это простая функция типа getter, которая возвращает указатель на переменную, поскольку она по крайней мере позволит вам изменить этокод, если изменение когда-либо становится необходимым, а также позволяет вам легко устанавливать точки останова, где бы они ни использовались, добавлять инструментарий в функцию и т. д.

0 голосов
/ 01 июля 2010

Это совершенно субъективный вопрос.Тем не менее, вот что я делаю примерно:

Заголовок:

// extern defines, constants and enums
// public types
// extern methods

Нет внешних переменных: -)

Единица компиляции:

// includes
// definitions for extern constants
// static function prototypes
// everything else

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

0 голосов
/ 01 июля 2010

Хорошая структура, которую вы используете.

Рекомендуется использовать для именования общедоступных переменных и общедоступных методов префикс с именем продукта / названия компании, чтобы избежать конфликта имен с другими библиотеками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...