как включить несколько классов с одинаковыми включениями? - PullRequest
3 голосов
/ 09 ноября 2010

Как мне включить два файла .h / class, каждый из которых имеет #include "h_file.h"? оба требуют определения файла .h, и оба включены в основную программу. Как предотвратить переопределение определений .h (что приводит к не компиляции компилятора)?

у меня есть:

main.cpp
class1.h/class1.cpp
class2.h/class2.cpp
h_file.h

1 Ответ

9 голосов
/ 09 ноября 2010

Использование включает в себя охранники:

#ifndef INCLUDE_GUARD_IDENTIFIER_GOES_HERE
#define INCLUDE_GUARD_IDENTIFIER_GOES_HERE

// code for header

#endif

Во второй раз, когда он включен, это фактически пустой файл.


Есть много разных способов выбора идентификатора INCLUDE_GUARD_IDENTIFIER_GOES_HERE,с обоснованиями для каждого.Лично я делаю FILE_DIRECTORY_FILE_NAME_CLASS/FUNCTION_NAME_HPP:

#ifndef UTILITY_FOO_HPP
#define UTILITY_FOO_HPP

namespace utility
{
    void foo();
}

#endif

Другие будут генерировать GUID и прикреплять их к базовому имени, например:

INCLUDE_GUARD_A629F54A136C49C9938CB33EF8EDE676

Это почти гарантирует, что оно никогда не столкнется.В конечном счете, решать вам.Однако, независимо от того, что вы придумали, убедитесь, что оно соответствует правилам : нигде не ставьте двойные подчеркивания и не начинайте его с подчеркивания, за которым следует буква верхнего регистра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...