真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言定義宏函數(shù)可變參 宏定義 可變參數(shù)

c語(yǔ)言如何定義一個(gè)可變參數(shù)函數(shù) 如何調(diào)用其輸入的參數(shù) 分別

有專門(mén)的宏,處理可變參

員工經(jīng)過(guò)長(zhǎng)期磨合與沉淀,具備了協(xié)作精神,得以通過(guò)團(tuán)隊(duì)的力量開(kāi)發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)建站堅(jiān)持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡(jiǎn)單”。公司專注于為企業(yè)提供網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、電商網(wǎng)站開(kāi)發(fā),小程序開(kāi)發(fā),軟件定制網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。

void va_start( va_list arg_ptr, prev_param );

type va_arg( va_list arg_ptr, type );

void va_end( va_list arg_ptr );

一個(gè)簡(jiǎn)單的例子

void?simple_va_fun(int?i,?...)

{

va_list?arg_ptr;

int?j=0;

va_start(arg_ptr,?i);

j=va_arg(arg_ptr,?int);

va_end(arg_ptr);

printf("i=%d?j=%d\bn",?i,?j);

return;

}

int?main()

{

simple_va_fun(1);

simple_va_fun(1,2);

simple_va_fun(1,200);

return?0;

}

將函數(shù)定義成宏 參數(shù)類型怎樣設(shè)置

需要借用C語(yǔ)言的VA_LIST 宏定義,及相關(guān)操作來(lái)實(shí)現(xiàn)可變參數(shù)。VA_LIST 所在頭文件:#include stdarg.h,用法如下:(1)首先在函數(shù)里定義一具VA_LIST型的變量,這個(gè)變量是指向參數(shù)的指針;(2)然后用VA_START宏初始化剛定義的VA_LIST變量;(3)然后用VA_ARG返回可變的參數(shù),VA_ARG的第二個(gè)參數(shù)是你要返回的參數(shù)的類型(如果函數(shù)有多個(gè)可變參數(shù)的,依次調(diào)用VA_ARG獲取各個(gè)參數(shù));(4)最后用VA_END宏結(jié)束可變參數(shù)的獲取。以下是一個(gè)自定義打印接口的實(shí)現(xiàn):pre t="code" l="cpp"int my_printf(const char *fmt, )//表示參數(shù)可變

{

va_list args;//定義va_list

static char gc_PrintfOutBuff[1000];

va_start(args, fmt);//初始化

vsnprintf((char *) gc_PrintfOutBuff, 1000, (char *) fmt, args);//這里沒(méi)有使用VA_ARG取回單個(gè)變量,而是借用vsnprinf一次性讀取。

va_end(args);//結(jié)束獲取

puts("%s",(const char *)gc_PrintfOutBuff);//使用。

return 0;

}

C語(yǔ)言宏定義實(shí)現(xiàn)可變參數(shù)

__VA_ARGS__ 是一個(gè)可變參數(shù)的宏,這個(gè)可變參數(shù)的宏是新的C99規(guī)范中新增的。

GCC、VC2005開(kāi)始支持。

#define CALCSUM(v, ...)? ?sum(v, __VA_ARGS__)

int sum(int num_args, ...)

{

int val = 0;

va_list ap;

int i;

va_start(ap, num_args);

for (i = 0; i num_args; i++)

{

val += va_arg(ap, int);

}

va_end(ap);

return val;

}

int main(void)

{

printf("10、20 和 30 的和 = %d\n", CALCSUM(3, 10, 20, 30));

printf("4、20、25 和 30 的和 = %d\n", CALCSUM(4, 4, 20, 25, 30));

return 0;

}


標(biāo)題名稱:c語(yǔ)言定義宏函數(shù)可變參 宏定義 可變參數(shù)
文章URL:http://weahome.cn/article/dopooid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部