Je démarre un nouveau projet C ++ et j'ai commencé à chercher les dernières nouveautés dans le style C ++. Je me suis retrouvé ici en ce qui concerne la dénomination des fichiers et j'ai pensé que je partagerais comment j'ai fait mon choix. Voici:
Stroustrup considère cela plus comme une considération commerciale que technique .
En suivant ses conseils, vérifions ce que les chaînes d'outils attendent.
Pour UNIX / Linux, vous pouvez interpréter les règles de création GNU par défaut suivantes comme favorisant le suffixe du nom de fichier .cc, car les règles .cpp et .C ne sont que des alias:
$ make -p | egrep COMPILE[^=]+=
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cpp = $(COMPILE.cc)
COMPILE.C = $(COMPILE.cc)
(Remarque: il n'y a pas d'alias COMPILE.cxx par défaut)
Donc, si vous ciblez UNIX / Linux, .cc et .cpp sont de très bonnes options.
Lorsque vous ciblez Windows, vous recherchez des problèmes avec .C, car son système de fichiers est insensible à la casse. Et il peut être important pour vous de noter que Visual Studio favorise le suffixe .cpp
Lorsque vous ciblez macOS, notez que Xcode préfère .cpp / .hpp (juste vérifié sur Xcode 10.1). Vous pouvez toujours modifier le modèle d'en-tête pour utiliser .h.
Pour ce que cela vaut, vous pouvez également baser votre décision sur les bases de code que vous aimez. Google utilise .cc et LLVM libc ++ utilise .cpp, par exemple.
Qu'en est-il des fichiers d'en-tête? Ils sont compilés dans le contexte d'un fichier C ou C ++, il n'y a donc pas besoin de compilateur ou de système de génération pour distinguer .h de .hpp. La mise en évidence de la syntaxe et l'indentation automatique par votre éditeur / IDE peuvent cependant être un problème, mais cela est résolu en associant tous les fichiers .h à un mode C ++. À titre d'exemple, ma configuration emacs sous Linux charge tous les fichiers .h en mode C ++ et modifie très bien les en-têtes C. Au-delà de cela, lorsque vous mélangez C et C ++, vous pouvez suivre ces conseils .
Ma conclusion personnelle : .cpp / .h est le chemin de moindre résistance.