В конце концов, это не имеет значения, потому что компиляторы C ++ могут работать с файлами в любом формате. Если это реальная проблема в вашей команде, подбросьте монетку и переходите к реальной работе.
.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.
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
:
Как и в случае с большинством стилевых соглашений, важны только две вещи:
Может показаться, что они противоречат друг другу, но каждый из них имеет ценность по своим причинам.
Я использовал .C и .h для источника и заголовка соответственно. Приятным моментом в этом выборе является то, что в командной строке легко использовать *. [Ch]
для выбора всех файлов кода. Использование .C
может быть проблемой для файловых систем без учета регистра, но если у вас есть foo.c
и foo.C
в одном каталоге, вы заслуживаете того, что вы все равно получить :)
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
.
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.
Просто следуйте соглашению, используемому проектом / командой.
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.
cpp = c plus plus, поэтому я предпочитаю, что означает cc или cxx?
.cpp
- это рекомендуемое расширение для C ++, насколько мне известно. Некоторые даже рекомендуют использовать .hpp
для заголовков C ++, просто чтобы отличаться от C.
Хотя компилятору все равно, что вы делаете, это личное предпочтение.
Неважно, какое из этих расширений вы используете. Выбирайте то, что вам больше нравится, просто будьте последовательны с именами. Единственное исключение, о котором я знаю из этого соглашения об именах, - это то, что я не мог заставить WinDDK
(или сейчас WDK
?) Для компиляции .cc
файлы. В Linux это вряд ли проблема.
Другие используемые расширения файлов включают .cxx
и .C
(заглавная C). Я полагаю, что Бьярн Страуструп изначально использовал .C
. .cpp
- это имя препроцессора C, поэтому жаль, что он также использовался для C ++.
Использование двух 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
Отличный совет по использованию 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
для простоты кросс-платформенного/кросс-инструментального распознавания.