多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術 > C技巧:結構體參數(shù)轉成不定參數(shù)

C技巧:結構體參數(shù)轉成不定參數(shù)

來源:程序員人生   發(fā)布時間:2014-03-14 21:20:14 閱讀次數(shù):2837次
下面這段程序是一個C語言的小技巧,其展示了如何把一個參數(shù)為結構體的函數(shù)轉成一個可變參數(shù)的函數(shù),其中用到了宏和內建宏“__VA_ARGS__”,下面這段程序可以在GCC下正常編譯通過:

#include <stdio.h>

#define func(...) myfunc((struct mystru){__VA_ARGS__})

struct mystru { const char *name; int number; };

void myfunc(struct mystru ms )
{
printf("%s: %d", ms.name ?: "untitled", ms.number);
}

int main(int argc, char **argv)
{
func("three", 3);
func("hello");
func(.name = "zero");
func(.number = argc, .name = "argc",);
func(.number = 42);
return 0;
}
從上面這段程序,我們可以看到一個叫 myfunc的函數(shù),被func的宏改變了,本來myfunc需要的是一個叫mystru的結構,然而通過宏,我們把struct mystru的這個參數(shù),變成了不定參數(shù)列表的一個函數(shù)。上面這段程序輸出入下,

three: 3
hello: 0
zero: 0
argc: 1
untitled: 42

雖然,這樣的用法并不好,但是你可以從另外一個方面了解一下這世上對C稀奇古怪的用法。 如果你把宏展開后,你就明的為什么了。下面是宏展開的樣子:

myfunc((struct mystru){"three", 3});
myfunc((struct mystru){"hello"});
myfunc((struct mystru){.name = "zero"});
myfunc((struct mystru){.number = argc, .name = "argc",});
myfunc((struct mystru){.number = 42});
生活不易,碼農辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产欧美一区二区三区视频在线观看 | 国产自在自拍 | 国产成人精品免费视频网页大全 | 香蕉蕉亚亚洲aav综合 | 91久久九九精品国产综合 | 大看蕉a在线观看 | 国产精品亚洲综合 | 五月天久久综合 | 久久精品国产亚洲a不卡 | 日产日韩亚洲欧美综合搜索 | 国产性tv国产精品 | 亚洲春色小说 | 日韩欧美国产精品 | 日韩专区欧美 | 成人欧美一区二区三区在线 | 2021最新热播中文字幕 | 亚洲国产一区二区三区在线观看 | 九九精品久久久久久久久 | 久久r这里只有精品 | 欧美性猛交xxxxx按摩欧美 | 一区二区三区四区视频在线观看 | 亚洲国产日韩欧美高清片a 亚洲国产日韩欧美一区二区三区 | 亚洲欧美另类日本久久影院 | 欧美另类xxxx图片 | 日本特黄特黄刺激大片免费 | 最近中文字幕免费mv视频8 | 亚洲男人天堂久久 | 色在线网站| 国产精品ⅴ视频免费观看 | 欧美极品xxxxⅹ另类 | 亚洲 欧美 小说 国产 图片 | 欧美ucjizz免费播放器 | 色综合美国色农夫网 | 日韩亚洲一区中文字幕 | 国产在线日本 | 成年人在线观看视频网站 | 黄色免费网址大全 | 特级a欧美做爰片毛片 | 国产精品一区伦免视频播放 | 韩国在线观看免费观看影院 | 欧美日韩大尺码免费专区 |