Я начинаю новый проект 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 - путь наименьшего сопротивления.