Расширение файла кода C ++? .cc против .cpp

513
задан 7 revs, 6 users 46% 27 February 2017 в 09:40
поделиться

15 ответов

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

644
ответ дан 22 November 2019 в 22:23
поделиться

.C and .cc seem to be standard for the (few) Unix-oriented C++ programs I've seen. I've always used .cpp myself, since I only really work on Windows and that's been the standard there since like forever.

I recommend .cpp personally, because... it stands for "C Plus Plus". It is of course vitally important that file extensions are acronyms, but should this rationale prove insufficiently compelling other important things are non-use of the shift key (which rules out .C and .c++) and avoidance of regular expression metacharacters where possible (which rules out .c++ -- unfortunately you can't really avoid the . of course.).

This doesn't rule out .cc, so even though it doesn't really stand for anything (or does it?) it is probably a good choice for Linux-oriented code.

8
ответ дан 22 November 2019 в 22:23
поделиться

I personally use .cc extension for implementation files, .hh for headers, and .inl for inline/templates.

As said before, it is mainly a matter of taste.

From what I've seen, .cc seems to be more "open source projects oriented", as it is advised in some great open source software coding styles, whereas .cpp seems to be more Windowish.

--- EDIT

As mentioned, this is "from what i've seen", it may be wrong. It's just that all Windows projects I've worked on used .cpp, and a lot of open source projects (which are mainly on unix-likes) use .cc.

Examples coding styles using .cc:

33
ответ дан 22 November 2019 в 22:23
поделиться

Как и в случае с большинством стилевых соглашений, важны только две вещи:

  1. По возможности будьте последовательны в том, что вы используете.
  2. Не создавайте ничего, что зависит от конкретного

Может показаться, что они противоречат друг другу, но каждый из них имеет ценность по своим причинам.

8
ответ дан 22 November 2019 в 22:23
поделиться

Я использовал .C и .h для источника и заголовка соответственно. Приятным моментом в этом выборе является то, что в командной строке легко использовать *. [Ch] для выбора всех файлов кода. Использование .C может быть проблемой для файловых систем без учета регистра, но если у вас есть foo.c и foo.C в одном каталоге, вы заслуживаете того, что вы все равно получить :)

7
ответ дан 22 November 2019 в 22:23
поделиться

Several people saying .cc doesn't stand for anything? It might. C++ started life as "C with Classes".

True that .cc and .cpp are also command names on most Unix systems (c compiler and c preprocessor respectively).

I use .cpp exclusively, but I started on Windows. .cc is more a Unix convention, although I see it less and less even there. GNU make has rules for .cpp so that's probably preferred, it will work by default on both Windows and everything else. On the other hand modern C++ uses no extension at all for headers, I really don't like that. All my projects use .h for header files, and they support both C and C++ as much as possible via extern "C" and testing __cplusplus.

10
ответ дан 22 November 2019 в 22:23
поделиться

I've personally never seen .cc in any project that I've worked on, but in all technicality the compiler won't care.

Who will care is the developers working on your source, so my rule of thumb is to go with what your team is comfortable with. If your "team" is the open source community, go with something very common, of which .cpp seems to be the favourite.

10
ответ дан 22 November 2019 в 22:23
поделиться

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

11
ответ дан 22 November 2019 в 22:23
поделиться

The other option is .cxx where the x is supposed to be a plus rotated 45°.

Windows, Mac and Linux all support .c++ so we should just use that.

12
ответ дан 22 November 2019 в 22:23
поделиться

cpp = c plus plus, поэтому я предпочитаю, что означает cc или cxx?

5
ответ дан 22 November 2019 в 22:23
поделиться

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

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

69
ответ дан 22 November 2019 в 22:23
поделиться

Неважно, какое из этих расширений вы используете. Выбирайте то, что вам больше нравится, просто будьте последовательны с именами. Единственное исключение, о котором я знаю из этого соглашения об именах, - это то, что я не мог заставить WinDDK (или сейчас WDK ?) Для компиляции .cc файлы. В Linux это вряд ли проблема.

8
ответ дан 22 November 2019 в 22:23
поделиться

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

18
ответ дан 22 November 2019 в 22:23
поделиться

Использование двух defalias немного отличается. Первый связывает функциональную ячейку для 'backward-delete-char с ячейкой ' delete-backward-char . Второй связывает 'search-forward-regexp с функцией, которая в настоящее время вызывается функцией ' re-search-forward .

Разница в том, что если вы позже измените определение of ' delete-backward-char , ' backward-delete-char теперь будет иметь новое поведение. В то время как во втором случае изменение функции для 're-search-forward не влияет на поведение ' 'search-forward-regexp .

Возможно, какое-то искусство ascii может help:

+-------------------------+     +-----------------+
|#<subr re-search-forward>| <-- |re-search-forward|
+-------------------------+     +-----------------+
                        ^       +---------------------+
                        \------ |search-forward-regexp|
                                +---------------------+

+----------------------------+     +--------------------+     +--------------------+
|#<subr delete-backward-char>| <-- |delete-backward-char| <-- |backward-delete-char|
+----------------------------+     +--------------------+     +--------------------+

Эта документация может помочь прояснить ситуацию.

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

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

271
ответ дан 22 November 2019 в 22:23
поделиться

Отличный совет по использованию makefile и других инструментов, рассмотрение некомпиляторных инструментов при принятии решения о том, какое расширение использовать - отличный подход, который поможет найти ответ, который подходит именно вам.

Я просто хотел добавить следующее, чтобы помочь с некоторой .cc vs .cpp информацией, которую я нашел. Ниже приведены расширения, разбитые по различным средам (из книги "C++ Primer Plus"):

Unix использует: .C, .cc, .cxx, .c

GNU C++ использует: .C, .cc, .cxx, .cpp, .c++

Digital Mars использует: .cpp, .cxx

Borland C++ использует: .cpp

Watcom uses: .cpp

Microsoft Visual C++ использует: .cpp, .cxx, .cc

Metrowerks CodeWarrior использует: .cpp, .cp, .cc, .cxx, .c++

Разные среды поддерживают разные расширения. Я тоже искал ответ на этот вопрос и нашел этот пост. Основываясь на этом сообщении, я думаю, что я мог бы пойти с .hpp и .cpp для простоты кросс-платформенного/кросс-инструментального распознавания.

195
ответ дан 22 November 2019 в 22:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: