[問題] 請問array size奇怪定義
請問一下
#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
11/02 11:28, 1F
→
11/02 11:29, , 2F
11/02 11:29, 2F
→
11/02 12:22, , 3F
11/02 12:22, 3F
→
11/02 13:41, , 4F
11/02 13:41, 4F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):