日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言可变参数宏

發(fā)布時(shí)間:2023/12/9 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言可变参数宏 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歲月不饒人,這年紀(jì)大了記憶力真是差了很多。今天寫程序需要用到可變參數(shù)的宏,可是忘了怎么寫,這倒也沒什么,因?yàn)槲乙幌蚴遣挥洃涍@些語法細(xì)節(jié)的,反正我知道程序里有個(gè)地方用到了這種技巧,但是可悲的是我忘了在哪個(gè)地方。搜索?語法都忘了搜個(gè)P呀。只好憑著印象,在自己負(fù)責(zé)的模塊代碼中找了一圈,花了十幾分鐘才終于在日志模塊找到。唉,看來還是寫下來比較好,這記憶力實(shí)在是不能相信了。

?

C語言中,可變參數(shù)宏的寫法有如下幾種形式:

#define myprint_1(fmt, ...)???? printf(fmt, __VA_ARGS__)

#define myprint_2(fmt, ...)???? printf(fmt, ##__VA_ARGS__)

#define myprint_3(fmt, arg...)? printf(fmt, ##arg)

?

int main(void)

{

??? myprint_1("%s, %s, %d\r\n", __FILE__, __FUNCTION__, __LINE__);

??? myprint_2("%s, %s, %d\r\n", __FILE__, __FUNCTION__, __LINE__);

??? myprint_3("%s, %s, %d\r\n", __FILE__, __FUNCTION__, __LINE__);

??? return 0;

}

?

注意:上面的三種形式在Windows+MinGW+GCC下編譯通過,可以使用,但是在Tornado 2.2+VxWorks 6.5下,前面兩種形式編譯會(huì)出錯(cuò),只有最后一種是可用的。

?

說實(shí)話,網(wǎng)上關(guān)于C語言可變參數(shù)宏的文章浩如煙海,為什么還要自己寫一篇這種文檔?那就是網(wǎng)上的文章雖然很多,但是良莠不齊,找到篇文章看半天后,還得自己驗(yàn)證一下,實(shí)在是耗時(shí)耗力,而自己記錄下來的,是已經(jīng)在程序中實(shí)際使用,經(jīng)過驗(yàn)證的代碼,其正確性、可用性當(dāng)然毋庸置疑,看了一眼馬上就能拿來用,省時(shí)省力,實(shí)在是個(gè)好辦法。唯一的缺點(diǎn)就是要寫文檔,還要發(fā)表,有點(diǎn)麻煩,唉,那總也比到處翻代碼強(qiáng)啊。

總結(jié)

以上是生活随笔為你收集整理的C语言可变参数宏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。