Les déclarations sont particulièrement importantes dans les langages de la tradition ALGOL , notamment la famille BCPL , en particulier C et C++ , ainsi que Pascal . Java utilise le terme « déclaration », bien qu'il n'exige pas de déclarations et de définitions distinctes.
spécifie-t-elle sa valeur ou seulement son type ? De même, la déclaration d'une fonction spécifie-t-elle son corps ( implémentation ) ou seulement sa signature ? Cette distinction n'est pas systématique : dans de nombreux langages, les déclarations incluent toujours une définition et peuvent être appelées « déclarations » ou « définitions », selon le langage. Toutefois, ces concepts sont distingués dans les langages qui exigent une déclaration avant utilisation (on utilise alors les déclarations anticipées) et dans les langages où l'interface et l'implémentation sont séparées : l'interface contient les déclarations, l'implémentation contient les définitions.Dans le langage courant, une « déclaration » désigne une déclaration pure (types uniquement, sans valeur ni corps), tandis qu'une « définition » désigne une déclaration incluant une valeur ou un corps. Cependant, dans le langage formel (dans les spécifications des langages), le terme « déclaration » englobe ces deux sens, avec des distinctions plus fines selon le langage : en C et C++, la déclaration d'une fonction sans corps est appelée prototype de fonction , tandis que la déclaration d'une fonction avec corps est appelée définition de fonction. En Java, les déclarations se présentent sous deux formes. Pour les méthodes publiques, elles peuvent être présentées dans les interfaces sous forme de signatures de méthode, composées du nom de la méthode, de ses types d'entrée et de son type de sortie. Une notation similaire peut être utilisée pour la définition des méthodes abstraites , qui ne contiennent pas de définition. La classe englobante peut être instanciée directement ; il est nécessaire de créer une nouvelle classe dérivée, fournissant la définition de la méthode, pour créer une instance de la classe. À partir de Java 8 , l'expression lambda a été introduite dans le langage et peut être considérée comme une déclaration de fonction.
Déclarations et définitions
Dans la famille des langages de programmation C, les déclarations sont souvent regroupées dans des fichiers d'en-tête , inclus dans d'autres fichiers sources qui référencent et utilisent ces déclarations, mais n'ont pas accès à leur définition. Les informations contenues dans le fichier d'en-tête assurent l'interface entre le code utilisant la déclaration et celui qui la définit, une forme d' encapsulation . Une déclaration est souvent utilisée pour accéder à des fonctions ou des variables définies dans différents fichiers sources, ou dans une bibliothèque . Une incompatibilité entre le type de la définition et le type de la déclaration génère une erreur de compilation.
Pour les variables, les définitions assignent des valeurs à une zone mémoire réservée lors de leur déclaration. Pour les fonctions, les définitions fournissent le corps de la fonction. Bien qu'une variable ou une fonction puisse être déclarée plusieurs fois, elle n'est généralement définie qu'une seule fois (en C++ , on parle de la règle de définition unique ou ODR).
Les langages dynamiques tels que JavaScript ou Python permettent généralement de redéfinir les fonctions, c'est -à -dire de les redéfinir ; une fonction est une variable comme une autre, avec un nom et une valeur (la définition).
Voici quelques exemples de déclarations qui ne sont pas des définitions, en C :
use strict ou « " » en Visual BasicOption Explicit ).