1
在過去幾年中,只要GCC相互兼容,就允許重複typedefs。我面臨的問題是DWARF調試擴展:看來GCC(v4.8)將重複的typedefs標記爲未使用,並且不包含在DWARF中。GCC,重複類型定義和DWARF
例子:
typedef struct yyx yyx_handle;
typedef struct yyx yyx_handle;
yyx_handle *get_yyx(void *p)
{ return (yyx_handle *)p; }
結果:
$ gcc -o f1.o -c f1.c -g
$ readelf --debug-dump f1.o | grep yyx_handle | wc -l
0
如果我添加-fno-eliminate-unused-debug-types
包括typedef的,但後來我的所有未使用的類型的出現爲好,炸燬目標文件的大小。
顯而易見的解決方案是刪除重複的定義,但這並不總是實用。還有其他建議嗎?
你的問題顯然有一個錯字 - typedefs是*相同*。然而,你的問題聽起來好像'typedef'd *名字*不同? 'yyx_handle'在這裏絕對不是沒用的? – tofro
在示例中使用'yyx_handle'。如果我刪除了typedef的一個出現,那麼它運行良好。 – Freezer