string2.h

来自「此工具是arm-linux-GCC交叉编译工具(cross-3.4.4)」· C头文件 代码 · 共 1,356 行 · 第 1/4 页

H
1,356
字号
__STRING_INLINE void *__mempcpy_small (void *__dest, char __src1,		 __STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3,		 __STRING2_COPY_ARR4 __src4, __STRING2_COPY_ARR5 __src5,		 __STRING2_COPY_ARR6 __src6, __STRING2_COPY_ARR7 __src7,		 __STRING2_COPY_ARR8 __src8, size_t __srclen){  union {    char __c;    __STRING2_COPY_ARR2 __sca2;    __STRING2_COPY_ARR3 __sca3;    __STRING2_COPY_ARR4 __sca4;    __STRING2_COPY_ARR5 __sca5;    __STRING2_COPY_ARR6 __sca6;    __STRING2_COPY_ARR7 __sca7;    __STRING2_COPY_ARR8 __sca8;  } *__u = __dest;  switch ((unsigned int) __srclen)    {    case 1:      __u->__c = __src1;      break;    case 2:      __extension__ __u->__sca2 = __src2;      break;    case 3:      __extension__ __u->__sca3 = __src3;      break;    case 4:      __extension__ __u->__sca4 = __src4;      break;    case 5:      __extension__ __u->__sca5 = __src5;      break;    case 6:      __extension__ __u->__sca6 = __src6;      break;    case 7:      __extension__ __u->__sca7 = __src7;      break;    case 8:      __extension__ __u->__sca8 = __src8;      break;    }  return __extension__ ((void *) __u + __srclen);}#   endif#  endif# endif#endif/* Return pointer to C in S.  */#ifndef _HAVE_STRING_ARCH_strchrextern void *__rawmemchr (const void *__s, int __c);# if __GNUC_PREREQ (3, 2)#  define strchr(s, c) \  (__extension__ (__builtin_constant_p (c) && !__builtin_constant_p (s)	      \		  && (c) == '\0'					      \		  ? (char *) __rawmemchr (s, c)				      \		  : __builtin_strchr (s, c)))# else#  define strchr(s, c) \  (__extension__ (__builtin_constant_p (c) && (c) == '\0'		      \		  ? (char *) __rawmemchr (s, c)				      \		  : strchr (s, c)))# endif#endif/* Copy SRC to DEST.  */#if (!defined _HAVE_STRING_ARCH_strcpy && !__GNUC_PREREQ (3, 0)) \    || defined _FORCE_INLINES# if !defined _HAVE_STRING_ARCH_strcpy && !__GNUC_PREREQ (3, 0)#  define strcpy(dest, src) \  (__extension__ (__builtin_constant_p (src)				      \		  ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8	      \		     ? __strcpy_small (dest, __strcpy_args (src),	      \				       strlen (src) + 1)		      \		     : (char *) memcpy (dest, src, strlen (src) + 1))	      \		  : strcpy (dest, src)))# endif# if _STRING_ARCH_unaligned#  ifndef _FORCE_INLINES#   define __strcpy_args(src) \     __extension__ __STRING2_SMALL_GET16 (src, 0),			      \     __extension__ __STRING2_SMALL_GET16 (src, 4),			      \     __extension__ __STRING2_SMALL_GET32 (src, 0),			      \     __extension__ __STRING2_SMALL_GET32 (src, 4)#  endif__STRING_INLINE char *__strcpy_small (char *, __uint16_t, __uint16_t,				      __uint32_t, __uint32_t, size_t);__STRING_INLINE char *__strcpy_small (char *__dest,		__uint16_t __src0_2, __uint16_t __src4_2,		__uint32_t __src0_4, __uint32_t __src4_4,		size_t __srclen){  union {    __uint32_t __ui;    __uint16_t __usi;    unsigned char __uc;  } *__u = (void *) __dest;  switch ((unsigned int) __srclen)    {    case 1:      __u->__uc = '\0';      break;    case 2:      __u->__usi = __src0_2;      break;    case 3:      __u->__usi = __src0_2;      __u = __extension__ ((void *) __u + 2);      __u->__uc = '\0';      break;    case 4:      __u->__ui = __src0_4;      break;    case 5:      __u->__ui = __src0_4;      __u = __extension__ ((void *) __u + 4);      __u->__uc = '\0';      break;    case 6:      __u->__ui = __src0_4;      __u = __extension__ ((void *) __u + 4);      __u->__usi = __src4_2;      break;    case 7:      __u->__ui = __src0_4;      __u = __extension__ ((void *) __u + 4);      __u->__usi = __src4_2;      __u = __extension__ ((void *) __u + 2);      __u->__uc = '\0';      break;    case 8:      __u->__ui = __src0_4;      __u = __extension__ ((void *) __u + 4);      __u->__ui = __src4_4;      break;    }  return __dest;}# else#  ifndef _FORCE_INLINES#   define __strcpy_args(src) \     __extension__ ((__STRING2_COPY_ARR2)				      \      { { ((__const char *) (src))[0], '\0' } }),			      \     __extension__ ((__STRING2_COPY_ARR3)				      \      { { ((__const char *) (src))[0], ((__const char *) (src))[1],	      \	  '\0' } }),							      \     __extension__ ((__STRING2_COPY_ARR4)				      \      { { ((__const char *) (src))[0], ((__const char *) (src))[1],	      \	  ((__const char *) (src))[2], '\0' } }),			      \     __extension__ ((__STRING2_COPY_ARR5)				      \      { { ((__const char *) (src))[0], ((__const char *) (src))[1],	      \	  ((__const char *) (src))[2], ((__const char *) (src))[3],	      \	  '\0' } }),							      \     __extension__ ((__STRING2_COPY_ARR6)				      \      { { ((__const char *) (src))[0], ((__const char *) (src))[1],	      \	  ((__const char *) (src))[2], ((__const char *) (src))[3],	      \	  ((__const char *) (src))[4], '\0' } }),			      \     __extension__ ((__STRING2_COPY_ARR7)				      \      { { ((__const char *) (src))[0], ((__const char *) (src))[1],	      \	  ((__const char *) (src))[2], ((__const char *) (src))[3],	      \	  ((__const char *) (src))[4], ((__const char *) (src))[5],	      \	  '\0' } }),							      \     __extension__ ((__STRING2_COPY_ARR8)				      \      { { ((__const char *) (src))[0], ((__const char *) (src))[1],	      \	  ((__const char *) (src))[2], ((__const char *) (src))[3],	      \	  ((__const char *) (src))[4], ((__const char *) (src))[5],	      \	  ((__const char *) (src))[6], '\0' } })#  endif__STRING_INLINE char *__strcpy_small (char *, __STRING2_COPY_ARR2,				      __STRING2_COPY_ARR3,				      __STRING2_COPY_ARR4,				      __STRING2_COPY_ARR5,				      __STRING2_COPY_ARR6,				      __STRING2_COPY_ARR7,				      __STRING2_COPY_ARR8, size_t);__STRING_INLINE char *__strcpy_small (char *__dest,		__STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3,		__STRING2_COPY_ARR4 __src4, __STRING2_COPY_ARR5 __src5,		__STRING2_COPY_ARR6 __src6, __STRING2_COPY_ARR7 __src7,		__STRING2_COPY_ARR8 __src8, size_t __srclen){  union {    char __c;    __STRING2_COPY_ARR2 __sca2;    __STRING2_COPY_ARR3 __sca3;    __STRING2_COPY_ARR4 __sca4;    __STRING2_COPY_ARR5 __sca5;    __STRING2_COPY_ARR6 __sca6;    __STRING2_COPY_ARR7 __sca7;    __STRING2_COPY_ARR8 __sca8;  } *__u = (void *) __dest;  switch ((unsigned int) __srclen)    {    case 1:      __u->__c = '\0';      break;    case 2:      __extension__ __u->__sca2 = __src2;      break;    case 3:      __extension__ __u->__sca3 = __src3;      break;    case 4:      __extension__ __u->__sca4 = __src4;      break;    case 5:      __extension__ __u->__sca5 = __src5;      break;    case 6:      __extension__ __u->__sca6 = __src6;      break;    case 7:      __extension__ __u->__sca7 = __src7;      break;    case 8:      __extension__ __u->__sca8 = __src8;      break;  }  return __dest;}# endif#endif/* Copy SRC to DEST, returning pointer to final NUL byte.  */#ifdef __USE_GNU# if !defined _HAVE_STRING_ARCH_stpcpy || defined _FORCE_INLINES#  ifndef _HAVE_STRING_ARCH_stpcpy#   if __GNUC_PREREQ (3, 4)#    define __stpcpy(dest, src) __builtin_stpcpy (dest, src)#   elif __GNUC_PREREQ (3, 0)#    define __stpcpy(dest, src) \  (__extension__ (__builtin_constant_p (src)				      \		  ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8	      \		     ? __builtin_strcpy (dest, src) + strlen (src)	      \		     : ((char *) (__mempcpy) (dest, src, strlen (src) + 1)    \			- 1))						      \		  : __stpcpy (dest, src)))#   else#    define __stpcpy(dest, src) \  (__extension__ (__builtin_constant_p (src)				      \		  ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8	      \		     ? __stpcpy_small (dest, __stpcpy_args (src),	      \				       strlen (src) + 1)		      \		     : ((char *) (__mempcpy) (dest, src, strlen (src) + 1)    \			- 1))						      \		  : __stpcpy (dest, src)))#   endif/* In glibc we use this function frequently but for namespace reasons   we have to use the name `__stpcpy'.  */#   define stpcpy(dest, src) __stpcpy (dest, src)#  endif#  if !__GNUC_PREREQ (3, 0) || defined _FORCE_INLINES#   if _STRING_ARCH_unaligned#    ifndef _FORCE_INLINES#     define __stpcpy_args(src) \     __extension__ __STRING2_SMALL_GET16 (src, 0),			      \     __extension__ __STRING2_SMALL_GET16 (src, 4),			      \     __extension__ __STRING2_SMALL_GET32 (src, 0),			      \     __extension__ __STRING2_SMALL_GET32 (src, 4)#    endif__STRING_INLINE char *__stpcpy_small (char *, __uint16_t, __uint16_t,				      __uint32_t, __uint32_t, size_t);__STRING_INLINE char *__stpcpy_small (char *__dest,		__uint16_t __src0_2, __uint16_t __src4_2,		__uint32_t __src0_4, __uint32_t __src4_4,		size_t __srclen){  union {    unsigned int __ui;    unsigned short int __usi;    unsigned char __uc;    char __c;  } *__u = (void *) __dest;  switch ((unsigned int) __srclen)    {    case 1:      __u->__uc = '\0';      break;    case 2:      __u->__usi = __src0_2;      __u = __extension__ ((void *) __u + 1);      break;    case 3:      __u->__usi = __src0_2;      __u = __extension__ ((void *) __u + 2);      __u->__uc = '\0';      break;    case 4:      __u->__ui = __src0_4;      __u = __extension__ ((void *) __u + 3);      break;    case 5:      __u->__ui = __src0_4;      __u = __extension__ ((void *) __u + 4);      __u->__uc = '\0';      break;    case 6:      __u->__ui = __src0_4;      __u = __extension__ ((void *) __u + 4);      __u->__usi = __src4_2;      __u = __extension__ ((void *) __u + 1);      break;    case 7:      __u->__ui = __src0_4;      __u = __extension__ ((void *) __u + 4);      __u->__usi = __src4_2;      __u = __extension__ ((void *) __u + 2);      __u->__uc = '\0';      break;    case 8:      __u->__ui = __src0_4;      __u = __extension__ ((void *) __u + 4);      __u->__ui = __src4_4;      __u = __extension__ ((void *) __u + 3);      break;    }  return &__u->__c;}#   else#    ifndef _FORCE_INLINES#     define __stpcpy_args(src) \     __extension__ ((__STRING2_COPY_ARR2)				      \      { { ((__const char *) (src))[0], '\0' } }),			      \     __extension__ ((__STRING2_COPY_ARR3)				      \      { { ((__const char *) (src))[0], ((__const char *) (src))[1],	      \	  '\0' } }),							      \     __extension__ ((__STRING2_COPY_ARR4)				      \      { { ((__const char *) (src))[0], ((__const char *) (src))[1],	      \

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?