Я начинаю новый проект C ++ и начал искать последние в стиле C ++. Я попал сюда по поводу именования файлов и подумал, что поделюсь своим выбором. Поехали:
Страуструп рассматривает это скорее как бизнес-соображение, чем как техническое .
Следуя его совету, давайте проверим, чего ожидают цепочки инструментов.
Для UNIX / Linux вы можете интерпретировать следующие стандартные правила GNU make как предпочтение суффиксу имени файла .cc, так как правила .cpp и .C являются просто псевдонимами:
$ make -p | egrep COMPILE[^=]+=
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cpp = $(COMPILE.cc)
COMPILE.C = $(COMPILE.cc)
(Примечание: псевдоним COMPILE.cxx по умолчанию отсутствует)
Так что, если вы нацелены на UNIX / Linux, и .cc, и .cpp - очень хорошие варианты.
Ориентируясь на Windows, вы ищете проблемы с .C, так как ее файловая система не учитывает регистр. И вам может быть важно отметить, что Visual Studio предпочитает суффикс .cpp
При нацеливании на macOS обратите внимание, что Xcode предпочитает .cpp / .hpp (только что проверено на Xcode 10.1). Вы всегда можете изменить шаблон заголовка, чтобы использовать .h.
Для чего бы это ни стоило, вы также можете основывать свое решение на кодовых базах, которые вам нравятся. Google использует .cc, а LLVM libc ++ использует .cpp, например.
Как насчет заголовочных файлов? Они компилируются в контексте файла C или C ++, поэтому компилятору или системе сборки не нужно отличать .h от .hpp. Однако может возникнуть проблема с подсветкой синтаксиса и автоматическим отступом вашего редактора / IDE, но это можно исправить, связав все файлы .h с режимом C ++. В качестве примера, моя конфигурация emacs в Linux загружает все файлы .h в режиме C ++ и прекрасно редактирует заголовки C. Кроме того, при смешивании C и C ++ вы можете следовать этому совету .
Мой личный вывод : .cpp / .h - путь наименьшего сопротивления.