新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C語言可變參數函數使用總結

        C語言可變參數函數使用總結

        作者: 時間:2013-05-13 來源:網絡 收藏

        do

        {

        selch = *fmt;

        if (selch!='%')

        {

        putch(*fmt);

        }

        else

        {

        selch = *++fmt;

        switch(selch)

        {

        case 'c':

        ch = va_arg(ap, int);

        printf("%c",ch);

        break;

        case 'd':

        ch = va_arg(ap,int);

        printf("%d",ch);

        break;

        case 'x':

        ch = va_arg(ap, int);

        printf("%#x",ch);

        break;

        case 'l':

        if(*++fmt== 'd')

        {

        i32value = va_arg(ap, long);

        printf("%ld",i32value);

        }

        else

        {

        putch('l');

        if(*fmt!=0)

        {

        putch(*fmt);

        }

        }

        break;

        default:

        break;

        }

        }

        ++fmt;

        }while(*fmt!='');

        va_end(ap);

        }

        void main(void)

        {

        TestFun("this is %d,%c,%x,%ld",1234,'6',0x2345,(long)12345678);

        getch();

        }

        void main(void)

        {

        TestFun("this is %d,%c,%x,%ld",1234,(char)'6',0x2345,(long)12345678);

        getch();

        }

        上述的example使用宏定義, var_start(ap, pareN),var_arg(ap,type),var_end(ap).

        var_start(ap, pareN) //是ap指向第一個變參.

        var_arg(ap,type),//返回變參的實際值.

        var_end(ap).//是ap指向空指針.

        具體的實現,在不同的下有所不同.


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 蛟河市| 团风县| 太湖县| 大丰市| 汕尾市| 璧山县| 临城县| 荔浦县| 巍山| 喜德县| 霍城县| 福鼎市| 南木林县| 马鞍山市| 砀山县| 太和县| 武强县| 镇沅| 镇宁| 和硕县| 安陆市| 郎溪县| 维西| 沁阳市| 昌黎县| 青川县| 涡阳县| 乌鲁木齐市| 中超| 通山县| 金昌市| 临沭县| 台北市| 灌云县| 泽库县| 西盟| 涿鹿县| 仁化县| 崇左市| 石阡县| 都匀市|