Включать заголовки в заголовочный файл?

У меня есть несколько библиотек, сделанных один (библиотека геометрии, библиотека связанного списка, и т.д.). Я хочу сделать заголовочный файл для включения их всех в один lib.h. Мог я делать что-то вроде этого:

#ifndef LIB_H_
#define LIB_H_

#include <stdio.h>
#include <stdlib.h>
#include <linkedlist.h>
#include <geometry.h>
....

#endif

Затем я мог просто сослаться на эту библиотеку и на самом деле ссылку несколько библиотек. Действительно ли это возможно? В противном случае существует ли путь вокруг этого?

10
задан Mohit Deshpande 20 April 2010 в 23:22
поделиться

2 ответа

Да, это сработает.

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

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

18
ответ дан 3 December 2019 в 16:52
поделиться

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

Как уже отмечалось, вы должны организовать свои заголовки в логические группы.

5
ответ дан 3 December 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: