Home >Backend Development >C++ >Why Should I Only Include Header Files (.h) and Not Implementation Files (.cpp) in My C Code?
Understanding Header and Implementation File Inclusion
When working with C code, it's essential to understand the difference in including header files (.h) and implementation files (.cpp). This distinction is crucial to avoid compilation errors and maintain code organization.
Why Include Header Files Only?
When attempting to include an implementation file (.cpp) instead of a header file (.h), compilation errors like "multiple definition of function" may arise. This is because headers primarily contain function declarations and class specifications, while implementation files hold the actual function implementations.
Including implementation files directly can lead to multiple definitions of functions because their code will be duplicated in multiple source files during the preprocessor's work. This duplication confuses the compiler, resulting in errors.
How Including Headers Works
Including a header file copies its contents into the source file where it's referenced. Consider the following example:
// main.cpp #include "foop.h" int main() { int x = 42; std::cout << x << std::endl; std::cout << foo(x) << std::endl; }
After the preprocessor processes this code, main.cpp will look like:
// iostream stuff int foo(int a) { return ++a; } int main() { int x = 42; std::cout << x << std::endl; std::cout << foo(x) << std::endl; }
As you can see, the implementation of foo() is now directly in main.cpp. However, if an implementation file named foop.cpp also contains a definition of foo(), the compiler will detect the duplicate definition and raise an error.
The above is the detailed content of Why Should I Only Include Header Files (.h) and Not Implementation Files (.cpp) in My C Code?. For more information, please follow other related articles on the PHP Chinese website!