Используйте суффикс `.cpp` для файлов кода и `.h` для файлов интерфейсов
Причина
Это давняя конвенция. Но последовательность важнее, поэтому если ваш проект использует что-то другое, следуйте этому.
Примечание
Эта конвенция отражает общий паттерн использования: заголовки чаще всего используются совместно с C для компиляции как C++, так и C, что обычно использует .h, и проще назвать все заголовки .h, чем иметь разные расширения только для тех заголовков, которые предназначены для общего использования с C. С другой стороны, файлы реализации редко используются совместно с C, и поэтому должны обычно отличаться от файлов .c, поэтому обычно лучше назвать все файлы реализации C++ чем-то другим (например, .cpp).
Конкретные имена .h и .cpp не требуются (просто рекомендуются по умолчанию), и другие имена широко используются. Примеры — .hh, .C и .cxx. Используйте такие имена эквивалентно. В этом документе мы ссылаемся на .h и .cpp как сокращение для файлов заголовков и реализации, даже если фактическое расширение может быть другим.
Ваша IDE (если вы её используете) может иметь сильное мнение о суффиксах.
Пример
// foo.h:
extern int a; // a declaration
extern void foo();
// foo.cpp:
int a; // a definition
void foo() { ++a; }
foo.h предоставляет интерфейс к foo.cpp. Глобальные переменные лучше избегать.
Плохой пример
// foo.h:
int a; // a definition
void foo() { ++a; }
#include <foo.h> дважды в программе и вы получите ошибку компоновщика за два нарушения правила одного определения.
Применение
- Отмечайте нестандартные имена файлов.
- Проверьте, что
.hи.cpp(и эквиваленты) следуют приведённым ниже правилам.
Часто задаваемые вопросы: Ответы на часто задаваемые вопросы
Этот раздел содержит ответы на часто задаваемые вопросы об этих руководствах.