久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

LINUX?C中用define定義可變參數(shù)的宏

 My Room 2012 2011-11-05
一般在調(diào)試打印Debug信息的時(shí)候, 需要可變參數(shù)的宏. 從C99開始可以使編譯器標(biāo)準(zhǔn)支持可變參數(shù)宏(variadic macros), 另外GCC也支持可變參數(shù)宏, 但是兩種在細(xì)節(jié)上可能存在區(qū)別.
1. __VA_ARGS__
        __VA_ARGS__ 將 "..." 傳遞給宏 . 如
        #define debug(format, ...) fprintf(stderr, format, __VA_ARGS__)

2. GCC的復(fù)雜宏
        GCC使用一種不同的語法,從而可以給可變參數(shù)一個(gè)名字,如同其它參數(shù)一樣.
        #define debug(format, args...) fprintf (stderr, format, args)
        這和第一條的宏例子是完全一樣的,但是這么寫可讀性更強(qiáng)并且更容易進(jìn)行描述.

3. ##__VA_ARGS__
        上面兩個(gè)定義的宏,如果出現(xiàn) debug("A Message")的時(shí)候,由于宏展開后有個(gè)多余的逗號,所以將導(dǎo)致編譯錯誤.
        為了解決這個(gè)問題,CPP 使用一個(gè)特殊的"##"操作,格式如下:
        #define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
        這里,如果可變參數(shù)被忽略或?yàn)榭?"##"操作將使預(yù)處理器(preprocessor)去除掉它前面的那個(gè)逗號.

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多