📄 stdarg.c
字号:
/* $Id: stdarg.c 262 2006-11-16 07:34:57Z solar $ *//* Release $Name$ *//* stdarg This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will.*/#ifdef TEST#include <_PDCLIB_test.h>#include <stdarg.h>#include <limits.h>#include <float.h>unsigned int rc = 0;typedef int (*intfunc_t)( void );enum tag_t{ TAG_END, TAG_INT, TAG_LONG, TAG_LLONG, TAG_DBL, TAG_LDBL, TAG_INTPTR, TAG_LDBLPTR, TAG_FUNCPTR};static int test( enum tag_t s, ... ){ enum tag_t tag = s; va_list ap; va_start( ap, s ); for (;;) { switch ( tag ) { case TAG_INT: { TESTCASE( va_arg( ap, int ) == INT_MAX ); tag = va_arg( ap, enum tag_t ); break; } case TAG_LONG: { TESTCASE( va_arg( ap, long ) == LONG_MAX ); tag = va_arg( ap, enum tag_t ); break; } case TAG_LLONG: { TESTCASE( va_arg( ap, long long ) == LLONG_MAX ); tag = va_arg( ap, enum tag_t ); break; } case TAG_DBL: { TESTCASE( va_arg( ap, double ) == DBL_MAX ); tag = va_arg( ap, enum tag_t ); break; } case TAG_LDBL: { TESTCASE( va_arg( ap, long double ) == LDBL_MAX ); tag = va_arg( ap, enum tag_t ); break; } case TAG_INTPTR: { TESTCASE( *( va_arg( ap, int * ) ) == INT_MAX ); tag = va_arg( ap, enum tag_t ); break; } case TAG_LDBLPTR: { TESTCASE( *( va_arg( ap, long double * ) ) == LDBL_MAX ); tag = va_arg( ap, enum tag_t ); break; } case TAG_FUNCPTR: { TESTCASE( (va_arg( ap, intfunc_t ))() == INT_MAX ); tag = va_arg( ap, enum tag_t ); break; } case TAG_END: { va_end( ap ); return 0; } } }}int dummy(){ return INT_MAX;}int main(){ int x = INT_MAX; long double d = LDBL_MAX; test( TAG_END ); test( TAG_INT, INT_MAX, TAG_END ); test( TAG_LONG, LONG_MAX, TAG_LLONG, LLONG_MAX, TAG_END ); test( TAG_DBL, DBL_MAX, TAG_LDBL, LDBL_MAX, TAG_END ); test( TAG_INTPTR, &x, TAG_LDBLPTR, &d, TAG_FUNCPTR, dummy, TAG_END ); return TEST_RESULTS;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -