Maison > développement back-end > C++ > Pourquoi devrais-je inclure des fichiers d'en-tête (.h) au lieu de fichiers d'implémentation (.cpp) en C ?

Pourquoi devrais-je inclure des fichiers d'en-tête (.h) au lieu de fichiers d'implémentation (.cpp) en C ?

Barbara Streisand
Libérer: 2024-11-26 01:06:12
original
546 Les gens l'ont consulté

Why Should I Include Header (.h) Files Instead of Implementation (.cpp) Files in C  ?

Inclure les fichiers .cpp : un cas de duplication de fonctions

Lors du développement en C, il est généralement recommandé d'inclure l'en-tête (.h) fichiers pour la fonctionnalité, plutôt que des fichiers d’implémentation (.cpp). L'inclusion de fichiers .cpp peut entraîner des erreurs dues à la duplication de fonctions.

Considérons l'exemple de code suivant :

// main.cpp
#include <iostream>
#include "foop.h" // Header file containing the function declaration

int main() {
  std::cout << foo(42) << std::endl;
  return 0;
}

// foop.h
int foo(int a); // Function declaration

// foop.cpp
int foo(int a) { // Function definition
  return ++a;
}
Copier après la connexion

Ce code sera compilé et exécuté correctement car le fichier d'en-tête (.h) inclut uniquement la déclaration de la fonction foo(), tandis que la définition est fournie dans le fichier .cpp séparé.

Cependant, si nous remplaçons l'inclusion du fichier d'en-tête dans main.cpp avec l'inclusion du fichier .cpp :

// main.cpp
#include <iostream>
#include "foop.cpp" // Implementation file containing the function definition
Copier après la connexion

Cela entraînera une erreur du compilateur :

multiple definition of foo(int)
first defined here
Copier après la connexion

Cela est dû au fait que le préprocesseur copie le contenu du fichier inclus dans le fichier source principal. L'inclusion du fichier .cpp copie efficacement la définition de la fonction foo() dans main.cpp, ce qui entraîne une définition en double de la fonction.

Pour éviter la duplication de fonction, il est recommandé d'inclure les fichiers d'en-tête (.h) uniquement pour les déclarations et les fichiers .cpp pour les définitions. Cela permet de garantir que les fonctions ne sont définies qu'une seule fois dans le programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal