Avatar ·

#pragma once contre include guards : que choisir pour éviter les inclusions multiples ?

Bonjour à tous ! Je suis un développeur C++ débutant et j'ai déjà rencontré plusieurs fois le problème de double inclusion de fichiers d'en-tête. Par exemple, j'ai ce code :

\n\n
// math_utils.h\n#ifndef MATH_UTILS_H\n#define MATH_UTILS_H\n\nint add(int a, int b) { return a + b; }\n\n#endif\n\n// main.cpp\n#include "math_utils.h"\n#include "math_utils.h"  // inclus accidentellement deux fois\n\nint main() {\n    return add(2, 3);\n}\n
\n\n

Avec les include guards, tout fonctionne, mais j'ai remarqué que de nombreux projets modernes (par exemple, ceux de Boost) utilisent #pragma once. J'ai lu que c'est une directive non standard, mais elle est supportée par tous les principaux compilateurs.

\n\n

Ce qui m'intéresse :

\n
    \n
  • Y a-t-il de réels problèmes de performance avec les include guards ?
  • \n