Tôi hiện đang làm việc với mã số C++ cũ, được biên dịch thành công với g.TS. 2.9.
Tôi đã được yêu cầu chuyển mã di sản này sang gcc 3.4.X. Hầu hết các lỗi đã được sửa chữa dễ dàng, nhưng điều này đặc biệt là một câu đố tôi.Ý nghĩa của cặp dấu ngoặc kép khởi tạo C-struct là gì?
Bối cảnh:
struct TMessage
{
THeader header;
TData data;
};
struct THeader
{
TEnum myEnum;
TBool validity;
};
gì đã được thực hiện:
const TMessage init = {{0}};
/* Later in the code ... */
TMessage message = init;
Câu hỏi của tôi (s):
ý nghĩa của {{}} nhà điều hành là gì? Liệu nó có khởi tạo trường đầu tiên (tiêu đề tiêu đề) thành số nhị phân 0 không? Nó có khởi tạo trường đầu tiên của cấu trúc thứ nhất (enum) thành (chữ) 0 không?
Lỗi 3.4.6 tôi nhận được là invalid conversion from 'int' to 'TEnum'
, hoặc bằng một hoặc hai cặp dấu ngoặc nhọn.
Làm cách nào tôi có thể đặt cấu trúc của mình thành một nhóm 0 mà không sử dụng memset?
Xin cảm ơn trước.
Tại sao bạn chuyển mã của mình từ phiên bản cũ của gcc sang phiên bản cũ của gcc? –
Để biên dịch/liên kết/thực hiện nó trên nền tảng khác. –
Không biết về C++. Trong C không có lỗi (có lẽ trình biên dịch của bạn đang trở nên hữu ích đến mức sai) – pmg