2016-06-22 3 views
-2

Я новичок и получил доступ к довольно сложному исходному коду, созданному командой из 90-х годов, которые были опытными и много работали вместе. Исходный код состоит из около 60 различных файлов .c, которые содержат еще больше файлов заголовков, и большинство из них состоят всего из нескольких строк кода. Один включаемый файл определяет функцию main в на жатки, в то время как другие состоят из директив, как #define, #include, #if (#endif), #else, #undef, #pragma и т.д. В также некоторых структур (struct). Кроме того, вы найдете enum (который является более или менее таким же, как #define), const и некоторыми переменными, такими как char, int, short, long, float и т.д. будет использоваться doubleМогу ли я использовать только один заголовок для большего приложения?

Ни один из них, если в .c файлах действительно нуждаются в них. Поскольку большинство файлов .c содержат многие из этих файлов заголовков, их сложно отслеживать. Моя идея состоит в том, чтобы поместить все файлы заголовков в один заголовочный файл, который я назову Unihead.h. В случае, если я хочу сделать какие-либо изменения, я должен проверить до 15 различных файлов заголовков, чтобы найти проблему. Я не вижу преимущества многих файлов заголовков. Поскольку я знаю, что нормально иметь заголовок для каждого исходного файла (например, Soccer.c будет иметь заголовок Soccer.h). Если у меня есть один заголовочный файл, я могу выполнить простой поиск и найти то, что я ищу более эффективно, делая процесс более плавным на мой взгляд. Есть ли какие-то побочные действия? (Я также добавлю комментарии для отслеживания)

ответ

1

Не думайте, что это хорошая идея.

Вы также можете комбинировать все файлы 60 .c в одном файле. Но есть много причин этой структуры источника и заголовков. Вы должны попытаться понять структуру проекта.

+0

Да, вы можете добавить все c.-файлы в один, но это более понятно, почему они делятся на части. Это делает его более организованным. Хотя файлы заголовков, на мой взгляд, не являются хорошей организованной системой в коде. Как правило, сам код также довольно грязный. Например, существуют директивы типа #define внутри .c-файла. Как и многие переменные ... – Thomas

0

Есть ли какие-либо нижние стороны, делающие эту вещь таким образом?

Время компиляции может увеличиться, особенно если итоговый файл монолитного заголовка большой.

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

1

Хорошо написанный код c, расположен как пирамида, с главным файлом в верхней части. Зависимости (вызовы функций, перечисления, константы и т. Д.) Будут работать вниз в пирамиде. Никогда не поднимайтесь вверх. Это поможет вам поддерживать, расширять и тестировать ваш код в будущем.

Если вы разрушите все ваши файлы заголовков, вы также разрушите пирамиду. Вы могли бы также свернуть и c-файлы.

Файлы заголовка (обычно) предназначены для открытых частей данного модуля. Например. они будут содержать «публичные функции», «public consts» и т. д. В c-файле лучше хранить код, например «private consts», «private macro» и т. д. Вот почему ваши c-файлы содержат «#defines».

Для меня ваш код звучит как хорошо написанный код. Например. заголовки для каждого файла (возможно пирамида), небольшие заголовки, содержащие только открытый код.

Будьте осторожны, чтобы вы не уничтожали больше, чем добавляете.

Смежные вопросы