[問題] 請問array size奇怪定義

看板C_and_CPP作者 (wind)時間14年前 (2011/11/02 10:36), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/2 (看更多)
請問一下 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) 其中他的定義如下 #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) 不曉得有沒有人看得懂BUILD_BUG_ON_ZERO和__same_type各式作什麼的 為什array_size需要多加 __must_be_array(arr) 謝謝 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.64.222

11/02 11:28, , 1F
__builtin_types_compatible_p 是gcc的內嵌函數
11/02 11:28, 1F

11/02 11:29, , 2F
用法可參考#1EhU2lzg中AstralBrain大的推文
11/02 11:29, 2F

11/02 12:22, , 3F
其實google一下就可以找到中文說明了 不過是簡體的
11/02 12:22, 3F

11/02 13:41, , 4F
真希望多點繁體
11/02 13:41, 4F
文章代碼(AID): #1EiAodPO (C_and_CPP)
文章代碼(AID): #1EiAodPO (C_and_CPP)