獲取Linux gcc結構體成員型別的方法

2021-10-09 10:32:13 字數 1043 閱讀 5546

對於struct stat 結構體,我想列印輸出成員變數,利用 man 手冊查到的成員是這樣的

沒有型別名字,也不給示例。從網上蒐羅出幾種判斷資料的型別的方法如下:

1、gdb工具中的ptype/whatis命令

利用gdb工具中的ptype命令可以找到部分型別的原始型別

whatis可以判斷在該成員的自定義型別名

像這樣,但是也有成員型別名查不出來的,是什麼原因暫未查明,如有大佬知道請告知。明明存在的,下面再使用下面的方法

2、用 grep 命令查詢原結構體宣告,查到成員的同時也可以查到具體成員的型別

grep "struct stat" /usr -nr
得到如下:

vim /usr/src/linux-headers-3.5.0-54/arch/m32r/include/asm/stat.h
然後就可以得到如下內容

這種方法我覺得更好一些。如果命令記不住,那就直接第三種方法

這個就不用往下說了是吧,哈哈哈!!!

獲取結構體某成員偏移

本身這個問題非常簡單,直接用位址差值即可求得,最近在某本書上看到了乙個非常牛的方法,第一次看還將信將疑覺得不太可能,後面上機驗證發現確實可以,如下 1 include iostream 23 using namespace std 45 6struct test7 1314 define find ...

從結構體成員獲取結構體位址的方法

今天朋友面試,有乙個問題他沒回答上來,我便在這裡給出答案,希望能幫助到一些準備找工作的同學。因為結構體成員在記憶體中的儲存資料是按照成員定義順序儲存的,因此,要回答這個問題,首先得解決兩個問題 意識到這兩個問題,還得注意兩個細節 1 c c 語言中,對指標進行算數運算時指標跳過的記憶體是 sizeo...

C C 結構體成員偏移量獲取

分析 節選自muduo.以下 通過offsetof獲取sin family在sockaddr in6中的字段偏移量.static assert offsetof sockaddr in6,sin6 family 0,sin6 family offset 0 需要注意 offsetof並非c c 標準...