2012-05-17 11 views
5

Niedawno zacząłem pracować z pakietem vtk i widzę tę dziwną notację, że zawierają one ; po zamknięciu nawiasów klamrowych }. Oto przykład z vtkUnstructuredGrid.hśrednik po nawiasach klamrowych w C++

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

To nie jest potrzebne i Qt Creator także poprawnie wykrywa to mówiąc extra ; podczas analizowania kodu. Jestem ciekawy, jaki może być tego powód? Może czytelność?

+24

Zero powodu. Nadmiar średnika jest obcy (i powoduje ostrzeżenia kompilatora). – ildjarn

+7

Autogenerowany kod może? Może to nieco uprościć logikę (coś w rodzaju dodawania dodatkowego "," do ostatniej wartości w wyliczeniu), trudno powiedzieć. –

+0

@EdS. może być w porządku. Pamiętam, że CMake generował niektóre pliki w czasie kompilacji ... – GradGuy

Odpowiedz

0

Nie jest to rzadkie. W C++ instrukcja kończy się na ;. Tak więc oświadczenie to int GetDataObjectType();. Teraz to polecenie jest funkcją i ma zdefiniowany blok: int GetDataObjectType() {}; wewnątrz bloku, mamy następną instrukcję: return VTK_UNSTRUCTURED_GRID;, więc cała linia może mieć dodatkowy średnik, ale nie jest to za dużo średnika - dużo, to tylko średnik można może pominąć.

1

Ponieważ QtCreator poprawnie wykrywa, , że jest zdecydowanie dodatkowym średnikiem, który nie tylko jest bezużyteczny, ale może również powodować ostrzeżenia i zamieszanie kompilatora.

Na przykład GCC z -Wpedantic flagą will trigger:

warning: extra ';'

Powiązane problemy