C ++ - Как я могу избежать появления этого заголовка дважды? - PullRequest
0 голосов
/ 22 января 2011

В: http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/

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

add.h:

#include "mymath.h"
int add(int x, int y);

subtract.h:

#include "mymath.h"
int subtract(int x, int y);

main.cpp:

#include "add.h"
#include "subtract.h"

Как можно избежать появления #include "mymath.h" дважды в main.cpp?

Спасибо.

Ответы [ 4 ]

5 голосов
/ 22 января 2011

Строки прямо под этим примером объясняют это.Ваш mymath.h файл должен выглядеть следующим образом:

#ifndef MYMATH_H
#define MYMATH_H

// your declarations here

#endif

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

4 голосов
/ 22 января 2011

используйте #pragma один раз, если вы используете MS VC ++ или стандартным способом

внутри mymath.h

#ifndef MYMATH_H
#define MYMATH_H

[code here]

#endif // MYMATH_H
2 голосов
/ 22 января 2011

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

1 голос
/ 22 января 2011

Вы должны поместить свои охранники заголовков в любой заголовок, также в mymath.h.

...