- 331 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:28:25 ]
- >>321
gcc -E してみたら、 /usr/include/sys/types.h でグローバルに uint と ushort の typedef が あった。どうもこいつらが影響してるみたい。 ちなみに、ソース先頭で #define _POSIX_SOURCE しとくとこれらの typedef が無くなるんで、 ふつうに通るようになる。 というわけで、問題を縮小していくと以下の3行で同じ問題が発生する。 typedef int I; namespace{ typedef int I; } I i; > :3: error: `I' does not name a type > :3: error: extra `;' typedef に限らず、グローバルスコープと無名名前空間の中に同じ名前の宣言があると、 宣言自体は通るのに、その後で実際には宣言された名前が使えなくなるみたい。 gcc のバグっぽいけど、標準ではどうなるべきなんだろうか? 2つの宣言のどっちを使うのか曖昧だからエラーになってほしいところ。
|

|