過去数年間、GCCは相互に互換性がある限り、重複したtypedefを許可しました。私が直面している問題は、DWARFデバッグ拡張機能です:GCC(v4.8)は重複するtypedefを未使用としてマークし、DWARFにそれらを含めていないようです。GCC、重複したtypedefs、およびDWARF
例:
typedef struct yyx yyx_handle;
typedef struct yyx yyx_handle;
yyx_handle *get_yyx(void *p)
{ return (yyx_handle *)p; }
結果:私は-fno-eliminate-unused-debug-types
を追加する場合
$ gcc -o f1.o -c f1.c -g
$ readelf --debug-dump f1.o | grep yyx_handle | wc -l
0
のtypedefが含まれているが、その後のすべての私の未使用のタイプは、オブジェクト・ファイルのサイズを爆破、同様に表示されます。
明らかな解決策は、重複する定義を削除することですが、それは必ずしも実用的ではありません。その他の提案はありますか?
あなたの質問に明らかにタイプミスがあります。 - typedefsは* same *です。あなたの質問は、 'typedef'd * names *が異なっているかのように聞こえますか? 'yyx_handle'はここでは使われていませんか? – tofro
例では 'yyx_handle'が使用されています。typedefの1つのオカレンスを削除するとうまく動作します。 – Freezer