What is the difference between .cc and .cpp file suffix?

C++

C++ Problem Overview


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.

C++ Solutions


Solution 1 - C++

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++.

Solution 2 - C++

There is no difference. They're exactly the same.

Solution 3 - C++

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.

Solution 4 - C++

Actually it all depends on what you and your compiler prefer. There is no difference between them at all.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionlv_lakerView Question on Stackoverflow
Solution 1 - C++James KanzeView Answer on Stackoverflow
Solution 2 - C++Alon GubkinView Answer on Stackoverflow
Solution 3 - C++DentoidView Answer on Stackoverflow
Solution 4 - C++BodhiView Answer on Stackoverflow