C ++: Как включить все исходные файлы из папки? - PullRequest
1 голос
/ 20 сентября 2010

Я поместил каждую функцию в свой файл.

Как включить все эти функции одновременно, не повторяя #include для каждого файла вручную? Мне все равно, в каком порядке включены функции.

Редактировать: Все функции из сотен разных файлов принадлежат к одной группе. На самом деле каждый файл имеет 4 функции ...

Ответы [ 4 ]

8 голосов
/ 20 сентября 2010

Рассмотрим ваши файлы.

file1.h

int plus(int a, int b);

file2.h

int minus(int a, int b);

file3.h

int mult(int a, int b);

file4.h

void drawcircle(int r, int xc, int yc);

file5.h

void drawsquare(int x0, int y0, int x1, int y1);

file6.h

void printresults();

Теперь разделите ваши файлы на группы. Сделайте следующие файлы.

math_funcs.h

#include "file1.h"
#include "file2.h"
#include "file3.h"

draw_funcs.h

#include "file4.h"
#include "file5.h"

output_funcs.h

#include "file6.h"

Затем создайте all.h файл.

all.h

#include "math_funcs.h"
#include "draw_funcs.h"
#include "output_funcs.h"
2 голосов
/ 20 сентября 2010

Используйте шаг предварительной сборки и выполните командный файл следующим образом:

@echo off
setlocal 
set file=test.h
echo // generated > %file%
for %%f in (*.h) do echo #include "%%f" >> %file%

Затем включите test.h.

В VS2008 вы можете добавить шаг предварительной сборки в «Проект» -«Свойства» - «Свойства конфигурации» - «События сборки» - «Событие PreBuild».

Установите для «Командная строка» значение $ (ProjectDir) \ test.cmd и скопируйте test.cmd (с указанным выше содержимым)в каталог проекта.

1 голос
/ 20 сентября 2010
  1. Вы добавляете все файлы, содержащие определения функций (тела функций) в ваш проект
  2. Вы пишете один заголовочный файл, который содержит декларацию для ваших функций.
  3. Вы включаете этот заголовок, где это необходимо.
0 голосов
/ 20 сентября 2010

это C или C++ вопрос ??

В C ++ у вас обычно есть файл для класса , а не функции. И если после наличия файлов .h и .cpp на класс у вас все еще есть сотни из них в одном каталоге , вам необходимо пересмотреть свой дизайн. Возможно, вам понадобится больше слоев абстракции, и вы можете разделить файлы на несколько каталогов.

...