2012-05-17 4 views
5

최근에 vtk 패키지 작업을 시작했으며 중괄호를 닫은 후 ;을 포함하는 이상한 표기법을 보았습니다. }. 그것은 여기가 필요하지 않은 것 vtkUnstructuredGrid.hC 중괄호 뒤의 세미콜론

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

에서 예입니다 및 QtCreator는 코드를 올바르게 구문 분석 할 때 extra ;을 말함으로써이 문제를 감지합니다. 나는 이것에 대한 이유가 무엇인지 궁금하다. 어쩌면 가독성?

+24

제로 이유. 불필요한 세미콜론은 컴파일러 경고를 유발합니다. – ildjarn

+7

자동 생성 된 코드일까요? 논리 (열거 형의 마지막 값에 여분의'를 추가하는 것과 같은 종류)를 단순화 할 수도 있습니다. 말하기 어렵습니다. –

+0

@EdS. hummm 어쩌면. 나는 CMake가 컴파일 시간에 파일 중 일부를 생성하는 것을 기억한다 ... – GradGuy

답변

0

그다지 드물지 않습니다. C++에서 문은 ;으로 끝납니다. 그 진술은 int GetDataObjectType();입니다. 이제이 명령문은 함수이며 블록 내에 다음과 같이 정의 된 블록이 있습니다. int GetDataObjectType() {}; 블록 안에 다른 문이 있습니다 : return VTK_UNSTRUCTURED_GRID; 그래서 전체 행에 세미콜론이 추가 될 수 있지만 세미콜론이 너무 많지는 않습니다. 세미콜론이 일 수 있습니다. 생략하십시오.

1

QtCreator가 올바르게 감지하므로 이 확실히 쓸모 없을뿐만 아니라 컴파일러 경고 및 혼란을 일으킬 수있는 추가 세미콜론입니다. -Wpedantic 플래그 will trigger와 예를 들어 GCC를 들어

: 무엇이든지

warning: extra ';'