Должен ли я использовать
#ifndef _HEADER_H_
#define _HEADER_H_
и т.д. в каждом файле заголовка?
Да, это хорошая практика для защиты каждого заголовка. Существует два наиболее распространенных способа сделать это:
#ifndef UNIQUE_IDENTIFIER // the identifier musn't start with "_"!
#define UNIQUE_IDENTIFIER
// your code here
#endif
Второй технически не требуется для поддержки компилятором, но он используется большинством современных компиляторов. Вы не можете сделать ошибку (например, опечатку, дубликат идентификатора) с помощью этого подхода:
#pragma once
// your code here
#pragma once
в качестве альтернативы._HEADER_H
подчеркивания, за которым следует заглавная буква (_HEADER_H
), и имена, содержащие два последовательных_HEADER_H
подчеркивания, зарезервированы для реализации. Не используйте их.