2012-05-17 9 views
5

Ho recentemente iniziato a lavorare con il pacchetto vtk e vedo questa strana notazione che includono ; dopo aver chiuso le parentesi graffe }. Ecco un esempio da vtkUnstructuredGrid.hpunto e virgola dopo parentesi graffe in C++

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

Non è necessario e QtCreator anche rilevi correttamente questo dicendo extra ; durante l'analisi del codice. Sono curioso quale potrebbe essere la ragione di questo? Forse leggibilità?

+24

Zero motivo. Il punto e virgola estraneo è estraneo (e causa avvisi del compilatore). – ildjarn

+7

Codice generato automaticamente? Può semplificare un po 'la logica (un po' come aggiungere un extra ',' all'ultimo valore in un enum), difficile da dire. –

+0

@EdS. hummm forse. Ricordo che CMake stava generando alcuni file al momento della compilazione ... – GradGuy

risposta

0

Non è così raro. In C++, un'istruzione termina con uno ;. Quindi la dichiarazione è int GetDataObjectType();. Ora, questa affermazione è una funzione e ha anche un blocco definito: all'interno del blocco, abbiamo un'altra affermazione: return VTK_UNSTRUCTURED_GRID; in modo che la linea completa possa avere un punto e virgola in più, ma non è un punto e virgola troppo, è solo un punto e virgola è potrebbe omettere.

1

Come rileva correttamente QtCreator, che è sicuramente un punto e virgola aggiuntivo che non solo è inutile, ma può anche causare avvisi e confusione del compilatore.

Ad esempio GCC con il -Wpedantic bandiera will trigger:

warning: extra ';'