Я видел код C ++, сохраненный как .cc
и .cpp
файлы. Есть ли разница между ними?
Руководство по стилю Google, кажется, предлагает .cc
, но не дает объяснения.
В основном я занимаюсь программами в системах Linux.
Я видел код C ++, сохраненный как .cc
и .cpp
файлы. Есть ли разница между ними?
Руководство по стилю Google, кажется, предлагает .cc
, но не дает объяснения.
В основном я занимаюсь программами в системах Linux.
lint
заботится,.C
это C ++ и.c
C без какого-.cc
либо понимания или.cpp
. По крайней мере, в AIX 6.1..cc
.Ответы:
В конце концов, это не имеет значения, потому что компиляторы C ++ могут работать с файлами в любом формате. Если это реальная проблема в вашей команде, подбросьте монету и переходите к реальной работе.
источник
GNU GCC распознает все следующие как файлы C ++, и будет использовать C ++ компиляция независимо от того , вы вызываете его через GCC или G ++:
.C
,.cc
,.cpp
,.CPP
,.c++
,.cp
, или.cxx
.Обратите внимание, что
.C
- case имеет значение в GCC,.c
это файл C, тогда.C
как это файл C ++ (если вы позволите компилятору решить, что именно он компилирует).GCC также поддерживает другие суффиксы для указания специальной обработки, например,
.ii
файл будет скомпилирован как C ++, но не предварительно обработан (предназначен для отдельно предварительно обработанного кода). Все распознанные суффиксы подробно описаны на gcc.gnu.org.источник
Отличный совет, который следует использовать для make-файла и других инструментов, учитывая, что некомпиляторские инструменты при принятии решения о том, какое расширение использовать, - отличный способ помочь найти ответ, который подходит именно вам.
Я просто хотел бы добавить следующее , чтобы помочь с некоторыми
.cc
против.cpp
информации , которую я нашел. Ниже приведены расширения, разбитые на разные среды (из книги «C ++ Primer Plus»):Unix использует:
.C
,.cc
,.cxx
,.c
GNU C ++ использует:
.C
,.cc
,.cxx
,.cpp
,.c++
Digital Mars использует:
.cpp
,.cxx
Borland C ++ использует:
.cpp
Watcom использует:
.cpp
Microsoft Visual C ++ использует:
.cpp
,.cxx
,.cc
Metrowerks Codewarrior применения:
.cpp
,.cp
,.cc
,.cxx
,.c++
Разные среды поддерживают разные расширения. Я тоже искал, чтобы ответить на этот вопрос и нашел этот пост. Основываясь на этом посте, я думаю, что я мог бы пойти на
.hpp
и.cpp
для облегчения кросс-платформенного / кросс-инструментального распознавания.источник
.cpp
?.cpp
для исходных файлов C ++. (В цитируемом ответе отмечается, что «cpp» - это аббревиатура для препроцессора C.).cpp
Насколько я знаю, это рекомендуемое расширение для C ++. Некоторые люди даже рекомендуют использовать.hpp
для заголовков C ++, просто чтобы отличить от C.Хотя компилятору все равно, что вы делаете, это личное предпочтение.
источник
Я лично использую
.cc
расширение для файлов реализации,.hh
для заголовков и.inl
для inline / шаблонов.Как было сказано ранее, это в основном дело вкуса.
Из того, что я видел ,
.cc
похоже, больше « ориентированных на проекты с открытым исходным кодом », как это рекомендуется в некоторых великих стилях кодирования программного обеспечения с открытым исходным кодом, тогда как.cpp
кажется более оконным.--- РЕДАКТИРОВАТЬ
Как уже упоминалось, это «из того, что я видел» , это может быть неправильно. Просто используются все проекты Windows, над которыми я работал
.cpp
, и многие проекты с открытым исходным кодом (которые в основном предназначены для Unix-лайков).cc
.Примеры стилей кодирования с использованием
.cc
:источник
-*- C++ -*-
тег в заголовки llvm.org/docs/CodingStandards.html ; Mozilla Coding Style предлагает .cpp / .h developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/… ; KDE, похоже, слишком использует .cpp / .h quickgit.kde.orgДругие используемые расширения файлов включают
.cxx
и.C
(заглавная C). Я считаю, Бьярн Страуструп использовал.C
изначально..cpp
это имя препроцессора C, поэтому, к сожалению, он использовался и для C ++.источник
Другой вариант,
.cxx
когдаx
предполагается, что плюс повернут на 45 °.Windows, Mac и Linux все поддерживают,
.c++
поэтому мы должны просто использовать это.источник
Несколько человек говорят, что
.cc
ничего не значит? Это может. C ++ начал жизнь как «C с классами».Верно, что
.cc
и.cpp
также являются именами команд в большинстве систем Unix (c-компилятор и c-препроцессор соответственно).Я использую
.cpp
исключительно, но я начал на Windows..cc
это скорее соглашение Unix, хотя я вижу его все реже и реже. В GNU make есть правила,.cpp
так что это, вероятно, предпочтительнее, оно будет работать по умолчанию как в Windows, так и во всем остальном. С другой стороны, современный C ++ вообще не использует расширения для заголовков, мне это действительно не нравится. Все мои проекты используют.h
для заголовочных файлов, и они поддерживают как C, так и C ++ в максимально возможной степени посредствомextern "C"
и тестирования__cplusplus
.источник
Просто следуйте соглашению, используемому для проекта / команды.
источник
Лично я никогда не видел
.cc
ни одного проекта, над которым работал, но во всех технических аспектах компилятору все равно.Кто позаботится о том, чтобы разработчики работали над вашим исходным кодом, поэтому мое эмпирическое правило состоит в том, чтобы придерживаться того, с чем ваша команда чувствует себя комфортно. Если ваша «команда» - это сообщество с открытым исходным кодом, займитесь чем-то очень распространенным, из которых,
.cpp
кажется, любимым.источник
.cc
в качестве расширения файлов для файлов реализации C ++Как и в случае большинства стилевых соглашений, важны только две вещи:
Может показаться, что они противоречат друг другу, но каждый из них имеет ценность по своим собственным причинам.
источник
.C
и.cc
кажется стандартным для (немногих) Unix-ориентированных программ на C ++, которые я видел. Я всегда использовал.cpp
себя, так как я действительно работаю только на Windows, и это было стандартом там, как и всегда.Я рекомендую
.cpp
лично, потому что ... это означает "C Plus Plus". Конечно, жизненно важно, чтобы расширения файлов были аббревиатурами, но если это обоснование окажется недостаточно убедительным, другие важные вещи - это не использование клавиши Shift (что исключает.C
и.c++
) и избегание метасимволов регулярных выражений, где это возможно (что исключает.c++
- к сожалению, вы не можете избежать этого,.
конечно.).Это не исключает
.cc
, так что, хотя это ничего не значит (или делает это?), Это, вероятно, хороший выбор для Linux-ориентированного кода.источник
Я использую .C и .h для источника и заголовка соответственно. В этом выборе есть одна приятная вещь: в командной строке легко
*.[Ch]
выбрать все файлы кода. Использование.C
может быть проблемой на нечувствительных к регистру файловых системах, но если у вас естьfoo.c
иfoo.C
в том же каталоге, вы все равно заслуживаете то, что вы получаете :)источник
Расширение .cc необходимо для использования неявных правил в make-файлах. Просмотрите эти ссылки, чтобы лучше понять make-файлы, но посмотрите в основном второй, так как он ясно говорит о полезности расширения .cc:
ftp://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_2.html
https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_10.html
Я только что узнал об этом сейчас.
источник
.cpp
файлы. Не беспокойся ! :-).C
может быть проблематичным в системах с нечувствительными к регистру файловыми системами. Я не думаю, что есть какое-то особое преимущество, напримерmake
, в использовании.cc
over.cpp
. Makefiles прекрасно работают с.cpp
исходными файлами C ++.Неважно, какое из этих расширений вы бы использовали. Выберите то, что вам больше нравится, просто будьте последовательны с именами. Единственное исключение, о котором я знаю в связи с этим соглашением об именах, - это то, что я не мог сделать
WinDDK
(или этоWDK
сейчас?) Компиляцию.cc
файлов. В Linux это вряд ли проблема.источник
Я начинаю новый проект C ++ и начал искать последние в стиле C ++. Я попал сюда по поводу именования файлов и подумал, что поделюсь своим выбором. Поехали:
Страуструп рассматривает это скорее как бизнес-соображение, чем как техническое .
Следуя его совету, давайте проверим, чего ожидают цепочки инструментов.
Для UNIX / Linux вы можете интерпретировать следующие стандартные правила GNU make как предпочтение суффиксу имени файла .cc, так как правила .cpp и .C являются просто псевдонимами:
(Примечание: псевдоним 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 ++ вы можете следовать этому совету .
источник
Как другие писали до меня, в конце концов, это то, что используется вашим проектом / командой / компанией.
Лично я не использую
cc
расширение, я пытаюсь уменьшить количество расширений и не увеличивать их, если нет явного значения (по моему мнению).Для чего это стоит, это то, что я использую :
c
- Только чистый C-код, без классов или структур с методами.cpp
- код C ++hpp
- Заголовок только код. Реализации находятся в заголовках (как классы шаблона)h
- заголовочные файлы для обоих C / C ++. Я согласен, что можно провести еще одно различие, но, как я уже писал, я пытаюсь снизить количество расширений для простоты. По крайней мере из проектов C ++, в которых я работал,h
файлы для pure-C встречаются реже, поэтому я не хотел добавлять другое расширение.источник