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

📄 stdarg.c

📁 一组基础的C库的实现
💻 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 + -