Расширение файла кода C ++? .cc против .cpp - PullRequest
507 голосов
/ 09 октября 2009

Я видел код C ++, сохраненный как файлы .cc и .cpp. Есть ли разница между ними?

Руководство по стилю Google предлагает .cc, но не дает объяснения.

В основном я занимаюсь программами в системах Linux.

Ответы [ 18 ]

605 голосов
/ 09 октября 2009

В конце концов, это не имеет значения, потому что компиляторы C ++ могут работать с файлами в любом формате. Если это реальная проблема в вашей команде, подбросьте монету и переходите к реальной работе.

254 голосов
/ 10 октября 2009

GNU GCC распознает все следующее как файлы C ++ и будет использовать компиляцию C ++ независимо от того, вызываете ли вы его через gcc или g ++: .C, .cc, .cpp, .CPP, .c++, .cp или .cxx.

Обратите внимание, что в GCC имеет значение .C - .c - это файл C, тогда как .C - это файл C ++ (если вы позволите компилятору решить, что это за компиляция).

GCC также поддерживает другие суффиксы для указания специальной обработки, например, файл .ii будет скомпилирован как C ++, но не предварительно обработан (предназначен для отдельно предварительно обработанного кода). Все распознанные суффиксы подробно описаны на gcc.gnu.org

174 голосов
/ 11 июля 2010

Отличный совет, который следует использовать для 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 для простоты кросс-платформенного / кросс-инструментального распознавания.

67 голосов
/ 09 октября 2009

.cpp - рекомендуемое расширение для C ++, насколько я знаю. Некоторые люди даже рекомендуют использовать .hpp для заголовков C ++, просто чтобы отличить их от C.

Хотя компилятору все равно, что вы делаете, это личное предпочтение.

28 голосов
/ 09 октября 2009

Я лично использую расширение .cc для файлов реализации, .hh для заголовков и .inl для встроенных / шаблонов.

Как уже говорилось, это в основном дело вкуса.

Из того, что я видел , .cc выглядит более " проектами с открытым исходным кодом, ориентированными ", как рекомендуется в некоторых великих стилях кодирования программного обеспечения с открытым исходным кодом, тогда как . cpp кажется более оконным.

--- РЕДАКТИРОВАТЬ

Как уже упоминалось, это "из того, что я видел" , это может быть неправильно. Просто во всех проектах Windows, над которыми я работал, используется .cpp, а во многих проектах с открытым исходным кодом (которые в основном относятся к unix-like) используется .cc.

Примеры стилей кодирования с использованием .cc:

16 голосов
/ 09 октября 2009

Другие используемые расширения файлов включают .cxx и .C (заглавная C). Я считаю, что Бьярн Страуструп изначально использовал .C. .cpp - это имя препроцессора C, поэтому, к сожалению, он использовался и для C ++.

12 голосов
/ 09 октября 2009

Другой вариант - .cxx, где x должен быть повернут на 45 °.

Windows, Mac и Linux все поддерживают .c++, поэтому мы должны просто использовать это.

11 голосов
/ 09 октября 2009

Просто следуйте соглашению, используемому проектом / командой.

10 голосов
/ 09 октября 2009

Несколько человек говорят, что .cc ничего не значит? Это может. C ++ начал жизнь как «C с классами».

Правда, .cc и .cpp также являются именами команд в большинстве систем Unix (компилятор c и препроцессор c соответственно).

Я использую .cpp исключительно, но я начал на Windows. .cc это скорее соглашение Unix, хотя я вижу его все реже и реже. В GNU make есть правила для .cpp, так что это, вероятно, предпочтительнее, она будет работать по умолчанию как в Windows, так и во всем остальном. С другой стороны, современный C ++ вообще не использует расширения для заголовков, мне это действительно не нравится. Все мои проекты используют .h для заголовочных файлов, и они максимально поддерживают C и C ++ через extern "C" и тестирование __cplusplus.

10 голосов
/ 09 октября 2009

Лично я никогда не видел .cc ни в одном проекте, над которым работал, но во всех технических аспектах компилятору все равно.

Кто позаботится о том, чтобы разработчики работали над вашим исходным кодом, поэтому мое эмпирическое правило состоит в том, чтобы придерживаться того, с чем ваша команда чувствует себя комфортно. Если ваша «команда» - это сообщество с открытым исходным кодом, выбирайте что-то очень распространенное, из которых .cpp кажется фаворитом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...