📄 va-sparc.h
字号:
/* This is just like the default gvarargs.h except for differences decribed below. *//* va_list is a structure instead of a char*. */typedef struct __va_ctl{ char *__stack; /* Current pointer for fetching args. */ char *__beg; /* Pointer to position of first saved register arg. */} va_list;#define va_alist __builtin_va_alist#define va_dcl int __builtin_va_alist;/* The difference is to store the stack address in both components instead of in AP itself. */#define va_start(AP) \ (__builtin_saveregs (), \ (AP).__beg = (AP).__stack = ((char *) &__builtin_va_alist))#define va_end(pvar)#define __va_rounded_size(TYPE) \ (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))/* The difference is that, for an aggregate that is not word-aligned, we advance (pvar).__stack to the first non-reg slot. */#define va_arg(pvar,TYPE) \({ TYPE __va_temp; \ ((__builtin_classify_type (__va_temp) < 12 \ || __alignof__ __va_temp >= 4) \ ? ((pvar).__stack += __va_rounded_size (TYPE), \ *((TYPE *) ((pvar).__stack - __va_rounded_size (TYPE)))) \ : ((((pvar).__stack - (pvar).__beg < 24) \ ? (pvar).__stack = (pvar).__beg + 24 : 0), \ (pvar).__stack += __va_rounded_size (TYPE), \ *((TYPE *) ((pvar).__stack - __va_rounded_size (TYPE)))));})
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -