2010-10-03 13 views
11

al trabajar con el espacio de nombres, ¿debo terminar con un punto y coma? Cuando pongo una declaración de avance de una clase en un espacio de nombres, por ejemplo, muchas personas no incluyen un punto y coma, pero parece ser opcional.Punto y coma en el espacio de nombres. ¿Necesario?

¿El punto y coma agrega funcionalidad o cambia la funcionalidad actual al agregar o eliminar?

Gracias.

+1

¿Puede usted pls editar para incluir muestras de lo que quiere decir? –

Respuesta

13

Si coma es opcional, no cambia la funcionalidad, de lo contrario, lo omite obtendrá un error de sintaxis.

namespace A { 
    class B; // forward declaration, semicolon is mandatory. 

    class B { 
    }; // class definition, semicolon is mandatory 

    class C { 
    } f(); // because otherwise it is a return type of a function. 
} // no need for semicolon 

namespace D = A; // semicolon is mandatory. 

Si estos no son los casos que usted ha mencionado, coméntelos.

+1

Cuando dice "no necesita punto y coma", cualquier punto y coma es ilegal en C++ 03. –

+1

@Charles: ¿Estás seguro? En C++ 0x y C++ 98 * simple-declaration * puede degenerar a ';' (todo lo demás marcado * opt *). – ybungalobill

+1

Sí, marque 7 [dcl.dcl], párrafo 3. En una _simple-declaration_, la lista init-declarator opcional puede omitirse solo al declarar una clase o enumeración, .... Básicamente, la _init-declarator-list_ se puede omitir solo cuando _decl-specifier-seq_ no. –

1

No, no necesita "terminarlo" con un punto y coma. No es una práctica común, ni tiene ningún efecto.

namespace foo 
{ 
    ... 
} // no semi-colon necessary here. 
5

No. Los espacios de nombres no necesitan terminar con un punto y coma, aunque Bjarne wanted to do it Supongo que para reducir las discrepancias relacionadas con la sintaxis con otras construcciones de C++. Sin embargo, no estoy seguro de por qué no fue aceptado.

"errores de escritura tontos inevitablemente se derivarán de la similitud sintáctica de el espacio de nombres construye a otra C++ construcciones. Propongo que permiten a un punto y coma opcional después de una declaración global para disminuir la frustración. Esto haría ser un tipo de '' declaración vacía '' para que coincida con las declaraciones vacías. "

Todas las declaraciones futuras de la clase deben terminar con un punto y coma. ¿Puedes dar ejemplos de dónde es opcional en C++?

+0

Creo que bruce eckel recomienda terminar con un punto y coma para imponer la idea de un bloque aislado – Killrazor

Cuestiones relacionadas