在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 寫出高效優(yōu)美的單片機C語言代碼

            寫出高效優(yōu)美的單片機C語言代碼

            作者: 時間:2013-07-01 來源:網(wǎng)絡(luò) 收藏

            14,判斷字符是不是16進(jìn)值的數(shù)字

            #define HEXCHK( c ) ( ((c) >= '0' (c) = '9') ||

            ((c) >= 'A' (c) = 'F') ||

            ((c) >= 'a' (c) = 'f') )

            15,防止溢出的一個方法

            #define INC_SAT( val ) (val = ((val)+1 > (val)) ? (val)+1 : (val))

            16,返回數(shù)組元素的個數(shù)

            #define ARR_SIZE( a ) ( sizeof( (a) ) / sizeof( (a[0]) ) )

            17,返回一個無符號數(shù)n尾的值MOD_BY_POWER_OF_TWO(X,n)=X%(2^n)

            #define MOD_BY_POWER_OF_TWO( val, mod_by )

            ( (dword)(val) (dword)((mod_by)-1) )

            18,對于IO空間映射在存儲空間的結(jié)構(gòu),輸入輸出處理

            #define inp(port) (*((volatile byte *) (port)))

            #define inpw(port) (*((volatile word *) (port)))

            #define inpdw(port) (*((volatile dword *)(port)))

            #define outp(port, val) (*((volatile byte *) (port)) = ((byte) (val)))

            #define outpw(port, val) (*((volatile word *) (port)) = ((word) (val)))

            #define outpdw(port, val) (*((volatile dword *) (port)) = ((dword) (val)))

            19,使用一些宏跟蹤調(diào)試

            A N S I標(biāo)準(zhǔn)說明了五個預(yù)定義的宏名。它們是:

            _ L I N E _

            _ F I L E _

            _ D A T E _

            _ T I M E _

            _ S T D C _

            如果編譯不是標(biāo)準(zhǔn)的,則可能僅支持以上宏名中的幾個,或根本不支持。記住編譯程序也許還提供其它預(yù)定義的宏名。

            _ L I N E _及_ F I L E _宏指令在有關(guān)# l i n e的部分中已討論,這里討論其余的宏名。

            _ D AT E _宏指令含有形式為月/日/年的串,表示源文件被翻譯到時的日期。

            翻譯到目標(biāo)的時間作為串包含在_ T I M E _中。串形式為時:分:秒。

            如果實現(xiàn)是標(biāo)準(zhǔn)的,則宏_ S T D C _含有十進(jìn)制常量1。如果它含有任何其它數(shù),則實現(xiàn)是非標(biāo)準(zhǔn)的。

            可以定義宏,例如: 當(dāng)定義了_DEBUG,輸出數(shù)據(jù)信息和所在文件所在行

            #ifdef _DEBUG

            #define DEBUGMSG(msg,date) printf(msg);printf(“%d%d%d”,date,_LINE_,_FILE_)

            #else

            #define DEBUGMSG(msg,date)

            #endif

            20,宏定義防止使用時錯誤用小括號包含。

            例如:#define ADD(a,b) (a+b)

            用do{}while(0)語句包含多語句防止錯誤

            例如:#difne DO(a,b) a+b;

            a++;

            應(yīng)用時:if(….)

            DO(a,b); //產(chǎn)生錯誤

            else

            解決方法: #difne DO(a,b) do{a+b;

            a++;}while(0)

            宏中"#"和"##"的用法

            一、一般用法

            我們使用#把宏參數(shù)變?yōu)橐粋€字符串,用##把兩個宏參數(shù)貼合在一起.

            用法:

            #include

            #include

            using namespace std;

            #define STR(s) #s

            #define CONS(a,b) int(a##e##b)

            int main()

            {

            printf(STR(vck)); // 輸出字符串"vck"

            printf("%dn", CONS(2,3)); // 2e3 輸出:2000

            return 0;

            }

            二、當(dāng)宏參數(shù)是另一個宏的時候

            需要注意的是凡宏定義里有用'#'或'##'的地方宏參數(shù)是不會再展開.

            1, 非'#'和'##'的情況

            #define TOW (2)

            #define MUL(a,b) (a*b)

            printf("%d*%d=%dn", TOW, TOW, MUL(TOW,TOW));

            這行的宏會被展開為:

            printf("%d*%d=%dn", (2), (2), ((2)*(2)));

            MUL里的參數(shù)TOW會被展開為(2).

            2, 當(dāng)有'#'或'##'的時候

            #define A (2)

            #define STR(s) #s

            #define CONS(a,b) int(a##e##b)

            printf("int max: %sn", STR(INT_MAX)); // INT_MAX #include

            c語言相關(guān)文章:c語言教程




            關(guān)鍵詞: 單片機 C語言 代碼

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉