1
私は組み込みプラットフォーム用にコンパイルしているコードをいくつか持っています。コードに対してClangベースのツールを実行しようとすると、いくつかのエラーが発生します。なぜ「以前の宣言指定子と結合できないのですか」
私は次のようにエラーを生成するコードを絞り込んいる:
typedef int _GCC_ATTR_ALIGN_8t __attribute__((__mode__(__QI__)));
typedef _GCC_ATTR_ALIGN_8t _Int8t __attribute__((__aligned__(1)));
typedef _Int8t _Intleast8t;
typedef _Int8t _Intfast8t;
typedef _Int8t _int8;
typedef _Int8t int8_t;
コードに対して打ち鳴らす3.8.0を実行しているからの出力は次のとおりです。
x.cpp:5:16: error: cannot combine with previous 'type-name' declaration
specifier
typedef _Int8t _int8;
^
x.cpp:5:1: warning: typedef requires a name [-Wmissing-declarations]
typedef _Int8t _int8;
^~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
なぜそれが持っていません他のtypedefではなく、_int8 typedefでのみ発行されますか?また、エラーはどういう意味ですか?
'_int8'はおそらくすでにどこかの型に定義されています。私はこれをワンドボックスで再現することはできません。 –
Visual Studio 2015を使ってWindows 10にClang 3.8.0をビルドしました。 'clang.exe x.cpp'を使ってコンパイルしました。 – Graznarak
アンダースコアと大文字で始まる識別子は、実装によって予約されています。問題のコードがコンパイラ/ベンダーによって提供されていない限り、間違っています。詳細については、http://stackoverflow.com/a/228797/845568を参照してください。 –