C语言可变参数宏
歲月不饒人,這年紀(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é)
- 上一篇: file js new 传到后台_JS读
- 下一篇: pdf嵌入字体(不用adobe pdf打