2012-05-17 127 views
5

Gần đây tôi đã bắt đầu làm việc với gói vtk và tôi thấy ký pháp kỳ lạ này bao gồm ; sau khi đóng dấu ngoặc nhọn }. Dưới đây là một ví dụ từ vtkUnstructuredGrid.hdấu chấm phẩy sau dấu ngoặc nhọn trong c + +

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

Nó không cần thiết và QtCreator cũng phát hiện một cách chính xác này bằng cách nói extra ; khi phân tích các mã. Tôi tò mò những gì có thể là lý do cho điều này? Có thể dễ đọc?

+24

Zero, cứ lí do gì. Dấu chấm phẩy không liên quan là không liên quan (và gây cảnh báo trình biên dịch). – ildjarn

+7

Có thể tạo mã tự động? Nó có thể đơn giản hóa logic một chút (giống như thêm một ',' bổ sung vào giá trị cuối cùng trong một enum), khó nói. –

+0

@EdS. hummm có thể. Tôi nhớ CMake đã tạo ra một số tệp trong thời gian biên dịch ... – GradGuy

Trả lời

0

Nó không phải là không phổ biến. Trong C++, một câu lệnh kết thúc bằng một số ;. Vì vậy, tuyên bố là int GetDataObjectType();. Bây giờ, câu lệnh này là một hàm và nó cũng có một khối được xác định: int GetDataObjectType() {}; bên trong khối, chúng ta có một câu lệnh khác: return VTK_UNSTRUCTURED_GRID; để dòng hoàn chỉnh có thể có dấu chấm phẩy phụ, nhưng không phải là dấu chấm phẩy quá nhiều, nó chỉ là dấu chấm phẩy bạn có thể bỏ qua.

1

Khi QtCreator phát hiện chính xác, rằng chắc chắn là dấu chấm phẩy phụ không chỉ vô dụng mà còn có thể gây cảnh báo và nhầm lẫn trình biên dịch.

Ví dụ GCC với -Wpedantic cờ will trigger:

warning: extra ';'

Các vấn đề liên quan