⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vaargs.c

📁 Small Device C Compiler 面向Inter8051
💻 C
字号:
/** Tests argument passing to functions via va_args.    Assumes that up to the first two arguments can be passed in registers.    type1: va_char, int    type2: va_char, int    type3: va_char, int */#include <testfwk.h>#include <stdarg.h>/* gcc 3.3 throws a warning, if char is in '...' */#if defined(PORT_HOST)# define va_char int#else# define va_char char#endifstatic {type1}returnFirstArg(int marker, ...){    va_list ap;    {type1} i;    va_start(ap, marker);    i = va_arg(ap, {type1});    va_end(ap);    LOG(("Returning %u\n", i));    return i;}static {type2}returnSecondArg(int marker, ...){    va_list ap;    {type2} i;    va_start(ap, marker);    UNUSED(va_arg(ap, {type1}));    i = va_arg(ap, {type2});    va_end(ap);    LOG(("Returning %u\n", i));    return i;}static {type3}returnThirdArg(int marker, ...){    va_list ap;    {type3} i;    va_start(ap, marker);    UNUSED(va_arg(ap, {type1}));    UNUSED(va_arg(ap, {type2}));    i = va_arg(ap, {type3});    va_end(ap);    LOG(("Returning %u\n", i));    return i;}voiddisabled_testArgs(void){    int marker = 12;    LOG(("First arg: %u\n", returnFirstArg(marker, ({type1})123, ({type2})45, ({type3})67)));    ASSERT(returnFirstArg(marker, ({type1})123, ({type2})45, ({type3})67) == 123);    ASSERT(returnFirstArg(marker, ({type1})-123, ({type2})45, ({type3})67) == -123);    ASSERT(returnSecondArg(marker, ({type1})1, ({type2})-23, ({type3})64) == -23);    ASSERT(returnSecondArg(marker, ({type1})1, ({type2})8, ({type3})64) == 8);    ASSERT(returnThirdArg(marker, -33, -34, -35) == -35);    ASSERT(returnThirdArg(marker, -33, -34, 35) == 35);}

⌨️ 快捷键说明

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