Hãy xem xét các chương trình sau đây:Bạn có nên bỏ qua cảnh báo "-Wmissing-niềng răng" của gcc/clang không?
#include <array>
int main()
{
std::array<int, 1> x = { 0 }; // warning!
x = { { 0 } }; // no warning
return 0;
}
Việc khởi đầu dẫn đến cảnh báo trên gcc 4.7.2 ...
main.cpp:5:22: warning: unused variable ‘x’ [-Wunused-variable]
... và kêu vang 3,1
main.cpp:5:28: warning: suggest braces around initialization of subobject [-Wmissing-braces]
std::array<int, 1> x = { 0 };
As far như là tiêu chuẩn đi, không nên có sự khác biệt giữa các dấu ngoặc nhọn đôi hoặc đơn, ít nhất trong ví dụ này.
Có hai cách để đối phó với cảnh báo:
- Chỉ cần tắt nó đi
- Fix mã, vì vậy trình biên dịch là hạnh phúc
làm bạn đề xuất gì? IMHO, biểu hiện xoăn kép trông hơi xấu xí. Mặt khác, cảnh báo có thể phát hiện các vấn đề thực sự trong các ví dụ phức tạp hơn. Bạn có biết một ví dụ mà cảnh báo sẽ giúp bạn?
Vì std :: mảng là tổng hợp. Xem [thread] [1] này. [1]: http://stackoverflow.com/questions/16341118/whats-the-correct-way-to-initialize-a-member-array-with-an-initializer-list –
Chỉ cần để thông báo: để vô hiệu hóa cảnh báo này, bạn nên thêm -Wno-missing-niềng răng trên clang –