Bonjour,
Je me pose la question (bête) suivante : pourquoi toutes les bibliothèques ou presque que l'on peut trouver publiquement utiliser l'extension de fichier .h ? .h ne va-t-il pas avec le .c, pour faire du C, justement ? Pourquoi ne pas utiliser le .hpp avec les .cpp des bibliothèques pour faire du C++ sans risque de confondre avec du C ?
Après quelques recherches, je vois qu'effectivement, il vaut mieux ne pas mélanger les deux langages. Mais alors pourquoi toutes ces bibliothèques utilisant le .h ?
Je pense que c'est simplement une question d'habitude.
Le fait de créer un fichier .c ou .cpp influe sur la façon dont il sera compilé (en C ou en C++). Par contre pour un fichier .h ou hpp il n'y aura aucune influence sur la façon dont il sera compilé puisque ça dépend uniquement de l'extension du fichier dans lequel il sera inclus.
le h est la première lettre de "header" (un en-tête) c'est pour cela qu'on l'utilise.
Il existe une différence principalement conventionnelle entre .h et .hpp :
le .h est traditionnellement utilisé pour les fichiers d'en-tête en langage C et également couramment utilisé pour les fichiers d'en-tête en C++.
le .hpp est utilisé pour indiquer spécifiquement que le fichier est un fichier d'en-tête C++.
➜ Cela peut aider à différencier les fichiers d'en-tête C++ des fichiers d'en-tête C, ce qui peut être utile dans les projets qui utilisent les deux langages.
En théorie on pourrait mettre .txt ou ce qu'on veut et ça devrait fonctionner sauf que les IDE souvent attendent qu'on respecte les conventions. Avec l'IDE arduino ou Wokwi ça ne fonctionnera pas si vous mettez un .toto à la place d'un .h.
Bonjour @J-M-L et @kamill
Merci pour vos réponses !
Donc si je résume, dans un projet C on utilise le .h, et pour un projet C++, on peut aussi utiliser le .h mais aussi le .hpp.
Le .h est majoritairement utilisé dans les projets C++ par convention et parce qu'il représente la première lettre du mot header donc plus intuitif.
Si on a un projet mélangeant le C et le C++, on fera la distinction en utilisant le .hpp pour les fichiers d'en-tête C++ et le .h pour ceux en C.
on utilisera .hpp que si on n'a besoin de différencier ce qui est vraiment C++, sinon par habitude on utilise .h
Les IDEs peuvent aussi introduire des soucis. Si vous regardez la bibliothèque Arduino IRremote vous verrez que dans la dernière version ils sont passés en .hpp et dans la doc ils expliquent pourquoi ➜ * Why *.hpp instead of *.cpp
Comme te le dit @J-M-L c'est une convention. Le C++ est indifférent à l'extension des fichiers header, ils ne sont pas compilés. Si tu fais, dans ton projet, un mélange une partie C et une partie C++ cela te permettra de différencier des .h qui seront liés à des src C et des .hpp qui seront liés à des src C++. C'est pour toi, pas pour l'IDE, de faire la différence d'un simple coup d'œil . Je met un bémol je parle de C++ pas arduino.