我有很多c結構(包含含有包含子結構的聯合的子結構...)),並希望以類似的方式,如海灣合作委員會可以做的打印它們。轉儲c結構類似於海灣合作委員會,但作爲可調用的c函數
所以我不想做這樣的事情在How do I dump an arbitrary struct in C?描述,堂妹那只是一個hexdump都
,我也不用想創造某種反省(Java /現代C++等),只是想用知識海灣合作委員會已經/爲gdb生成,並添加一些我知道的知識(如如何選擇正確的聯盟變體)
像Linux C: Easy & 'pretty' dump/printout of structs (like in gdb) - from source code?中提出的。
所以我的計劃是:取得我擁有的所有漂亮的c代碼,讓gcc處理它併產生一些元信息,然後在第二回閤中被某些東西解析/分析,然後能夠解釋/根據這些信息打印一段內存。
Linux中有一個工具,叫做pstruct/c2ph,whicht做類似的東西,似乎是在知識,可以進行修改,以做我想做的一定程度..
所以,基本上進出口尋找一個工具,它需要一個文件包含
struct X {
int a;
char *b;
}
併產生函數lile printX(void * p);然後打印如 {a:1,b:「lala」},如果p指向相應的X
那麼有沒有可以做到這一點的東西?我感覺pstruct非常接近...
如果你已經有了一些可解析格式的結構,你可以簡單地使用'sed'來爲它們中的每一個生成打印函數。如果您在其中使用C11泛型,則可以獲得更好的結果,因此可能具有類型泛型打印功能。 –
Humpfa。我只有c,這當然是可以解析的,但它是一個真正的包含和定義的c程序,所以這個實用程序應該像編譯器一樣以某種方式在相同的類中運行... – pbhd
您是否想過Perl ['c2ph'](http://perldoc.perl.org/c2ph.html),它曾經來自前體程序'pstruct'? –