C++ code file extension? What is the difference between .cc and .cpp [closed]
I have seen C++ code saved as both .cc
and .cpp
files. Is there a difference between the two?
The Google style guide seems to suggest .cc
, but provides no explanation.
I am mainly concerned with programs on Linux systems.
At the end of the day it doesn't matter because C++ compilers can deal with the files in either format. If it's a real issue within your team, flip a coin and move on to the actual work.
GNU GCC recognises all of the following as C++ files, and will use C++ compilation regardless of whether you invoke it through gcc or g++: .C
, .cc
, .cpp
, .CPP
, .c++
, .cp
, or .cxx
.
Note the .C
- case matters in GCC, .c
is a C file whereas .C
is a C++ file (if you let the compiler decide what it is compiling that is).
GCC also supports other suffixes to indicate special handling, for example a .ii
file will be compiled as C++, but not pre-processed (intended for separately pre-processed code). All the recognised suffixes are detailed at gcc.gnu.org
Great advice on which to use for the makefile and other tools, considering non-compiler tools while deciding on which extension to use is a great approach to help find an answer that works for you.
I just wanted to add the following to help with some .cc
vs .cpp
info that I found. The following are extensions broken down by different environments (from the "C++ Primer Plus" book):
Unix uses: .C
, .cc
, .cxx
, .c
GNU C++ uses: .C
, .cc
, .cxx
, .cpp
, .c++
Clang uses: .C
, .cc
, .cxx
, .cpp
, .c++
and also .cppm
for module interfaces
Digital Mars uses: .cpp
, .cxx
Borland C++ uses: .cpp
Watcom uses: .cpp
Microsoft Visual C++ uses: .cpp
, .cxx
, .cc
and also .ixx
for module interfaces
Metrowerks CodeWarrior uses: .cpp
, .cp
, .cc
, .cxx
, .c++
The different environments support different extensions. I too was looking to answer this question and found this post. Based on this post I think I might go with .hpp
and .cpp
for ease of cross-platform/cross-tool recognition.
.cpp
is the recommended extension for C++ as far as I know. Some people even recommend using .hpp
for C++ headers, just to differentiate from C.
Although the compiler doesn't care what you do, it's personal preference.