typedef enum BeNeLux
{
BELGIUM,
NETHERLANDS,
LUXEMBURG
} _ASSOCIATIONS_ BeNeLux;
Khi tôi cố gắng biên dịch điều này với trình biên dịch C++, tôi gặp lỗi, nhưng có vẻ như nó hoạt động tốt với trình biên dịch C. Vì vậy, đây là câu hỏi. Có thể đóng gói một enum trong C + +, hoặc ai đó có thể nhìn thấy lý do tại sao tôi sẽ nhận được lỗi?C++ đóng một typedef enum
Lỗi này là:
"dấu chấm phẩy mất tích sau khi tuyên bố Benelux".
Tôi biết, sau khi kiểm tra và kiểm tra lại, chắc chắn có dấu chấm phẩy ở đó và ở bất kỳ nơi nào được yêu cầu trong phần còn lại của mã.
Hợp đồng bổ sung:
_PACKAGE_
chỉ là một ví dụ. Tôi đang đổi tên nó.
_ASSOCIATIONS_
không phải là một loại Benelux:
#define _ASSOCIATIONS_ __attribute__((packed))
Mã này được iffed, nhưng chỉ để chắc chắn rằng nó là GNU C/C++.
#if defined (__GNUC__)
#define _ASSOCIATIONS_ __attribute__((packed))
#else
#define _ASSOCIATIONS_
Điều này có gây ra sự cố không? Tôi nghĩ (GNUC) làm việc cho cả hai C và C++
Phụ Lục 2:
Tôi thậm chí đã cố gắng
#ifdef __cplusplus
extern "C" {
#endif
typedef enum BeNeLux
{
BELGIUM,
NETHERLANDS,
LUXEMBURG
} _ASSOCIATIONS_ BeNeLux;
#ifdef __cplusplus
}
#endif
Không có niềm vui. Bất kỳ ai?
Lưu ý: -fort-enums không phải là khả năng; tìm kiếm một giải pháp có lập trình.
'_PACKAGE_' có nghĩa là gì? – wilhelmtell
Đây là tính năng không chuẩn. Bạn đang sử dụng trình biên dịch C nào? – Potatoswatter
Sử dụng gcc 3.3.5 hoặc thấp hơn (phải sử dụng phiên bản cũ hơn) – Sagar