Según Kernighan & Ritchie en "The C Programming Language": Una "declaración" anuncia las propiedades de las variables; consiste en un nombre y una lista de variables, tales como: int fahr, celsius;
De acuerdo con Stroustrup en "El lenguaje de programación C++": Una "declaración" es una declaración que introduce un nombre en el programa. Especifica un tipo para ese nombre. Un tipo define el uso apropiado de un nombre o una expresión.
Ninguno de los dos libros define específicamente "definición". Pero ambos usan el término en el sentido científico del VALOR de una variable. Por lo tanto, una declaración de función declara la firma de la llamada de la función. Una definición de función contiene el código real.
La necesidad de tener significados separados en estos idiomas se debe a los compiladores de antaño. Necesitaban saber los tipos de nombres antes de tiempo, antes de que el nombre se usara realmente. De lo contrario, tendrían que hacer otro pase a través del código fuente.
Bueno, en C++: int x = 10; // No es una declaración y es estrictamente una definición. Es por eso que estoy confundido con la terminología de C#. Además, C++ permite declaraciones de clase que son completamente diferentes de las definiciones de clases. C# permite clases parciales y clases completamente definidas, ¡pero ambas parecen ser declaraciones! –
@michael: No, ambas son definiciones. –
@michael: las clases parciales son solo una clase dividida en varios archivos de origen. Algunos miembros se definen en un archivo y algunos en otros. –