typedef enum BeNeLux
{
BELGIUM,
NETHERLANDS,
LUXEMBURG
} _ASSOCIATIONS_ BeNeLux;
これを C++ コンパイラでコンパイルしようとするとエラーが発生しますが、C コンパイラでは問題なく動作するようです。そこで質問です。C ++で列挙型をパックすることは可能ですか、またはエラーが発生する理由を誰かが見ることができますか?
エラーは次のとおりです。
「BeNeLux の宣言後にセミコロンがありません」。
チェックして再チェックした後、コードの残りの部分で必要な場所にセミコロンが確実にあることがわかりました。
補遺:
_PACKAGE_
はほんの一例でした。改名しています。
_ASSOCIATIONS_
は BeNeLux のタイプではありません:
#define _ASSOCIATIONS_ __attribute__((packed))
コードは改ざんされていますが、それが GNU C/C++ であることを確認するためだけです。
#if defined (__GNUC__)
#define _ASSOCIATIONS_ __attribute__((packed))
#else
#define _ASSOCIATIONS_
これは問題を引き起こしますか? ( GNUC ) は C と C++ の両方で機能すると思いました
補遺2:
私も試してみました
#ifdef __cplusplus
extern "C" {
#endif
typedef enum BeNeLux
{
BELGIUM,
NETHERLANDS,
LUXEMBURG
} _ASSOCIATIONS_ BeNeLux;
#ifdef __cplusplus
}
#endif
喜びはありません。誰?
注: -fshort-enums は使用できません。プログラムによる解決策を探しています。