在 Mac OS X 中/usr/include/secure/_string.h
,您可以找到以下定义:
#define memset(dest, val, len) \
((__darwin_obsz0 (dest) != (size_t) -1) \
? __builtin___memset_chk (dest, val, len, __darwin_obsz0 (dest)) \
: __inline_memset_chk (dest, val, len))
static __inline void *
__inline_memset_chk (void *__dest, int __val, size_t __len)
{
return __builtin___memset_chk (__dest, __val, __len, __darwin_obsz0(__dest));
}
我深入研究了 memset 函数的定义,并得到了上述内容。
是什么意思
(__darwin_obsz0 (dest) != (size_t) -1)
?我的意思size_t
是只是一个像int
.(size_t) -1
?这是什么
__builtin___memset_chk
?那是宏吗?那是怎么定义的?