2012-05-17 33 views
5

Recientemente comencé a trabajar con el paquete vtk y veo esta extraña notación que incluyen ; después de cerrar las llaves }. Este es un ejemplo de vtkUnstructuredGrid.hpunto y coma después de las llaves en C++

// Description: 
// Standard vtkDataSet API methods. See vtkDataSet for more information. 
int GetDataObjectType() {return VTK_UNSTRUCTURED_GRID;}; 

No es necesario y QtCreator también detecta correctamente esto diciendo extra ; al analizar el código. Tengo curiosidad de cual podría ser la razón para esto? Tal vez la legibilidad?

+24

Cero motivo. El punto y coma ajeno es extraño (y causa advertencias del compilador). – ildjarn

+7

¿Código autogenerado quizás? Puede simplificar un poco la lógica (algo así como agregar un ',' adicional al último valor en una enumeración), difícil de decir. –

+0

@EdS. Hummm tal vez. Recuerdo que CMake estaba generando algunos de los archivos en el momento de la compilación ... – GradGuy

Respuesta

0

No es poco común. En C++, una instrucción está terminando con un ;. Entonces la declaración es int GetDataObjectType();. Ahora, esta instrucción es una función y también tiene un bloque definido: int GetDataObjectType() {}; dentro del bloque, tenemos otra instrucción: return VTK_UNSTRUCTURED_GRID; por lo que la línea completa puede tener un punto y coma adicional, pero no es un punto y coma demasiado, es solo una punto y coma usted puede omitir.

1

Como QtCreator detecta correctamente, que es definitivamente un punto y coma adicional que no solo es inútil, sino que también puede causar advertencias y confusión en el compilador.

Por ejemplo GCC con la bandera will trigger-Wpedantic:

warning: extra ';'

Cuestiones relacionadas