What is the difference between .cc
and .cpp
file extensions?
From Google, I learned that they are both from the C++ language, but I am unsure of differences between them.
What is the difference between .cc
and .cpp
file extensions?
From Google, I learned that they are both from the C++ language, but I am unsure of differences between them.
Conventions.
Historically, the suffix for a C++ source file was .C
.
This caused a few problems the first time C++ was ported
to a system where case wasn't significant in the filename.
Different users adopted different solutions: .cc
,
.cpp
, .cxx
and possibly others. Today, outside of the Unix
world, it's mostly .cpp
. Unix seems to use .cc
more often.
For headers, the situation is even more confusing: for whatever
reasons, the earliest C++ authors decided not to distinguish
between headers for C and for C++, and used .h
.
This doesn't cause any problems if there is no C in the project, but when you
start having to deal with both, it's usually a good idea to
distinguish between the headers which can be used in C (.h
)
and those which cannot (.hh
or .hpp
).
In addition, in C++, a lot of users (including myself) prefer keeping the template
sources and the inline functions in a separate file. Which,
while strictly speaking a header file, tends to get yet another
set of conventions (.inl
, .tcc
and probably a lot of
others).
In the case of headers it makes absolutely no difference to the compiler.
In the case of source files different endings will cause the compiler to assume a different
language. But this can normally be overridden, and I used .cc
with VC++ long before VC++ recognized it as C++.
There is no difference. They're exactly the same.
Technically for the compiler there is no difference. However, some compilers and/or build systems will guess how to compile your files based on the extension and may or may not detect "cc" (or "cpp" but that is more rare I guess) as a c++ file.
Actually it all depends on what you and your compiler prefer. There is no difference between them at all.