2010-11-16 5 views
33

¿Qué dice exactamente una regla de definición en C++? La única ocurrencia confiable que puedo encontrar está en The C++ Programming Language, 3rd. ed., P. 9.2.3. ¿Hay alguna definición oficial de la regla excepto eso?¿Qué es exactamente una regla de definición en C++?

+0

fuertemente relacionada: [¿Tiene la redefinición de una función de la biblioteca estándar de violar la regla de una definición?] (Http://stackoverflow.com/q/41670800/514235) – iammilind

Respuesta

30

la verdad está en el estándar (3,2 regla Una definición):

Sin unidad de traducción deberá contener más de una definición de cualquier variable, función, tipo de clase, la enumeración de tipo o plantilla.

[...]

Cada programa deberá contener exactamente una definición de todas las funciones no-inline u objeto que se utiliza en ese programa; no se requiere diagnóstico. La definición puede aparecer explícitamente en el programa, se puede encontrar en el estándar o en una biblioteca definida por el usuario, o (cuando corresponda) está implícitamente definido (consulte 12.1, 12.4 y 12.8). Se debe definir una función en línea en cada unidad de traducción en la que se usa .

+3

Uh, que es un poco más que eso. También se refiere a múltiples unidades de traducción. Y excepciones a la regla (¡esto hace que sea un poco difícil hablar de eso!). Cheers, –

+2

De hecho, tendría que citar toda la página, así que fui por lo esencial. – icecrime