"Интерфейсы и реализации C" показывают некоторые интересные шаблоны использования для структур данных, но я уверен, что есть и другие.
Какова хорошая ссылочная документация о шаблонах использования файлов ".h" в C?
Ответ 1
Посмотрите на стандарт кодирования космического полета Годдарда (NASA) C (на этом URL). В нем есть несколько хороших и интересных рекомендаций.
Один конкретный ориентир, который я принял для моего собственного кода, состоит в том, что заголовки должны быть автономными. То есть вы должны иметь возможность написать:
#include "header.h"
и код должен правильно компилироваться, включая любые другие необходимые заголовки, независимо от того, что было раньше. Простым способом обеспечения этого является включение заголовка в источник реализации - в качестве первого заголовка. Если это компилируется, заголовок является самодостаточным. Если он не компилируется, исправьте так, чтобы он это делал. Конечно, это также требует, чтобы заголовки были идемпотентными - работайте одинаково независимо от того, как часто они включаются. Для этого есть стандартная идиома:
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
...operational body of header.h...
#endif /* HEADER_H_INCLUDED */
Обязательно, конечно, иметь #define в верхней части файла, а не внизу. В противном случае, если заголовок, включенный в него, также включает header.h, вы получите бесконечный цикл - не здоровый. Даже если вы решите пойти со стратегией:
#ifndef HEADER_H_INCLUDED
#include "header.h"
#endif /* HEADER_H_INCLUDED */
в коде, который включает заголовок - рекомендуется использовать не - важно включить защитные устройства в сам заголовок.
Обновление 2011-05-01
URL-адрес GSFC больше не работает. Вы можете найти дополнительную информацию в ответах на вопрос Должен ли я использовать #include в заголовках, который также содержит перекрестную ссылку на этот вопрос.
Обновление 2012-03-24
Ссылаемый стандарт кодирования NASA C можно получить и загрузить через интернет-архив:
Ответ 2
Makeheaders - интересный подход: используйте инструмент для создания заголовков. Makeheaders используется в DR Hipp cvstrac и fossil.
Ответ 3
Возможно, вы захотите взглянуть на крупномасштабную разработку программного обеспечения на С++ Джона Лакоса.