Làm cách nào để nhận hành vi cấu trúc/công đoàn ẩn danh được kích hoạt bởi -fplan9-extensions
trong GCC để hoạt động trong Clang?Tương đương với -fplan9-phần mở rộng trong Clang?
Tôi nhận được lỗi gán cho các thành viên ẩn danh khi sử dụng trình khởi tạo được chỉ định và tôi không được truyền miễn phí cho loại thành viên ẩn danh. Cả hai công việc này theo GCC với phần mở rộng nói trên được kích hoạt.
typedef struct {int hi;} Embedded;
typedef struct {Embedded;} Encapsulating;
Encapsulating poo = {.hi = 3;};
error: field designator 'hi' does not refer to any field in type 'Encapsulating'
void takes_embedded(Embedded *m);
takes_embedded(&poo);
warning: incompatible pointer types passing 'Encapsuating *' to parameter of type 'Embedded *'
Tôi nghĩ tốt nhất là không viết mã không hợp lệ C. –
Bạn không thể sử dụng các phần mở rộng của trình biên dịch cụ thể và sau đó hỏi "làm sao nó không hoạt động trên trình biên dịch khác này?" Bạn sẽ cần phải hoặc là dính vào GCC hoặc viết lại mã của bạn để được tiêu chuẩn C. –
@ Chris Lutz: Tôi đã được ấn tượng rằng kêu vang được dự định là một thay thế chủ yếu là thay thế cho GCC. Nó chắc chắn chấp nhận các tùy chọn, nhưng không có gì về nó. –