亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        二級(jí)C宏--智者的利刃,愚者的惡夢(mèng)(下)

        字號(hào):

        例四、用C宏,智者思維的火花說(shuō)了半天了,嘴皮子都干了,舉個(gè)例子大家輕松一下——看看人家老外是怎么用宏的。這個(gè)例子摘自《C專家編程》。 根據(jù)位模式構(gòu)建圖形圖標(biāo)(icon)或者圖形(glyph),是一種小型的位模式映射于屏幕產(chǎn)生的圖像。一個(gè)位代表圖像上的一個(gè)像素。如果一個(gè)位被設(shè)置,那么它所代表的像素就是“亮”的。如果一個(gè)位被清除,那么它所代表的像素就是“暗”的。所以,一系列的整數(shù)值能夠用于為圖像編碼。類似Iconedit這樣的工具就是用于繪圖的,他們所輸出的是一個(gè)包含一系列整型數(shù)的ASCII文件,可以被一個(gè)窗口程序所包含。它所存在的問(wèn)題是程序中的圖標(biāo)只是一串十六進(jìn)制數(shù)。在C語(yǔ)言中,典型的16X16的黑白圖形可能如下:
            static unsigned short stopwatch[] = {
            0x07C6,
            0x1FF7,
            0x383B,
            0x600C,
            0x600C,
            0xC006,
            0xC006,
            0xDF06,
            0xC106,
            0xC106,
            0x610C,
            0x610C,
            0x3838,
            0x1FF0,
            0x07C0,
            0x0000
            };
            正如所看到的那樣,這些C語(yǔ)言常量并未有提供有關(guān)圖形實(shí)際模樣的任何線索。這里有一個(gè)驚人的#define定義的優(yōu)雅集合,允許程序建立常量使它們看上去像是屏幕上的圖形。
            #define X )*2+1
            #define _ )*2
            #define s ((((((((((((((((0 /* For building glyphs 16 bits wide */
            定義了它們之后,只要畫所需要的圖標(biāo)或者圖形等,程序會(huì)自動(dòng)創(chuàng)建它們的十六進(jìn)制模式。使用這些宏定義,程序的自描述能力大大加強(qiáng),上面這個(gè)例子可以轉(zhuǎn)變?yōu)椋?BR>    static unsigned short stopwatch[] =
            {
            s _ _ _ _ _ X X X X X _ _ _ X X _ ,
            s _ _ _ X X X X X X X X X _ X X X ,
            s _ _ X X X _ _ _ _ _ X X X _ X X ,
            s _ X X _ _ _ _ _ _ _ _ _ X X _ _ ,
            s _ X X _ _ _ _ _ _ _ _ _ X X _ _ ,
            s X X _ _ _ _ _ _ _ _ _ _ _ X X _ ,
            s X X _ _ _ _ _ _ _ _ _ _ _ X X _ ,
            s X X _ X X X X X _ _ _ _ _ X X _ ,
            s X X _ _ _ _ _ X _ _ _ _ _ X X _ ,
            s X X _ _ _ _ _ X _ _ _ _ _ X X _ ,
            s _ X X _ _ _ _ X _ _ _ _ X X _ _ ,
            s _ X X _ _ _ _ X _ _ _ _ X X _ _ ,
            s _ _ X X X _ _ _ _ _ X X X _ _ _ ,
            s _ _ _ X X X X X X X X X _ _ _ _ ,
            s _ _ _ _ _ X X X X X _ _ _ _ _ _ ,
            s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
            };
            顯然,與前面的代碼相比,它的意思更為明顯。標(biāo)準(zhǔn)的C語(yǔ)言具有八進(jìn)制、十進(jìn)制和十六進(jìn)制常量,但沒有二進(jìn)制常量,否則的話倒是一種更為簡(jiǎn)單的繪制圖形模式的方法。
            如果抓住書的右上角,并斜這看這一頁(yè),可能會(huì)猜測(cè)這是一個(gè)用于流行窗口系統(tǒng)的“cursor busy”小秒表圖形。我是在幾年前從Usenet comp.lang.c新聞組學(xué)到這個(gè)技巧的。
            千萬(wàn)不要忘了在繪圖結(jié)束后清除這些宏定義,否這很可能會(huì)給你后面的代碼帶來(lái)不可預(yù)測(cè)的后果。
            好了,今天的廢話就到這里了。水能載舟,亦能覆舟,把握好手中的雙刃劍,讓它好好的為你服務(wù)吧,別割破了手。 (完)