2012-10-06 2 views
0

Possible en double:
In C++ why have header files and cpp files?Les fichiers d'en-tête sont-ils nécessaires?

Issu d'un milieu C#, je trouve des fichiers d'en-tête vraiment ennuyeux. Sont-ils nécessaires même avec C++ 11?

+1

Pourquoi ne seront-ils pas nécessaires dans C++ 11 est au-delà de moi ... –

+2

@CodingMash Si le comité de normalisation aurait trouvé un bon moyen pour les modules il pourrait y avoir eu un remplacement. Mais c'est un sujet assez complexe pour faire les choses correctement ... – johannes

Répondre

2

C++ a besoin de fichiers d'en-tête (et de libs aussi) tout comme C# a besoin d'assemblages de référence.

0

Oui, ils le sont. Supposons que vous voulez développer une DLL ou SO. Comment un développeur devrait-il savoir quelles fonctions cette bibliothèque offre? Il a donc besoin de prototypes appelés API à inclure dans des projets personnalisés. De cette façon, on divise la déclaration et la mise en œuvre. Vous déclarez quelles fonctions sont disponibles mais vous pouvez toujours changer le code interne.

1

Oui, parce que c'est toujours basé sur C. Vous pouvez répondre à votre propre question: Ne les utilisez pas et essayez de compiler sans eux. Si vous ne le pouvez pas, les compilateurs ont toujours besoin d'eux.

Je ne veux pas dire cela comme une tautologie. Si la spécification de langage les appelle toujours, et que les compilateurs correspondent à la spécification, ce serait un énorme effort de changement. Et le débat prendrait beaucoup de temps. Cela ressemble à une question qui est destinée à un peu plus de ventilation et de débat sans fin réelle.

+0

On peut écrire et compiler des applications complètes sans utiliser d'en-têtes. Il n'y a rien dans la norme qui vous oblige à utiliser un en-tête. (bien sûr, ce ne sera pas du vrai code de la vie, seulement pour des tests très simples, etc.) ;-) – johannes

+0

@johannes la norme C++ définit les en-têtes pour la bibliothèque standard. Rien ne vous oblige à les utiliser, mais si vous voulez utiliser la bibliothèque standard, vous devez utiliser ces en-têtes. – juanchopanza

+0

@juanchopanza Oui, je peux encore écrire des programmes de test triviaux sans ceux-ci. rien d'autre je l'ai dit (et bien, certains compilateurs pourraient utiliser une forme de "en-têtes intégrés" pour les en-têtes standard, ceux-ci ne sont peut-être pas "en-tête") vous ne pouvez pas compiler sans en-têtes, il y a beaucoup de choses que vous ne pouvez pas faire sans les inclure, mais il reste encore des options sans header) – johannes

Questions connexes