亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 第14章 實踐項目開發——智能溫控系統14.4 [打印本頁]

作者: 卓然塵世間    時間: 2026-5-13 09:43
標題: 第14章 實踐項目開發——智能溫控系統14.4

14.4條件編譯
條件編譯屬于預處理程序,包括之前講的宏,都是程序在編譯之前做的一些必要的處理,這些都不是實際程序功能代碼,而僅僅是告訴編譯器需要進行的特定操作等。
條件編譯通常有三種用法,第一種表達式:
    #if  表達式
        程序段 1
    #else  
        程序段 2
    #endif
作用:如果表達式的值為“真”(非0),則編譯程序段1,否則,編譯程序段2。在使用中,表達式通常是一個常量,事先用宏來進行聲明,通過宏聲明的值來確定到底執行哪段程序。
比如公司開發了同類的兩款產品,這兩款產品的功能有一部分是相同的,有一部分是不同的,同樣所編寫的程序大部分的代碼是一樣的,只有少部分有區別。這個時候為了方便程序的維護,可以把兩款產品的代碼寫到同一個工程程序中,然后把其中有區別的功能利用條件編譯。
    #define  PLAN   0
    #if (PLAN == 0)
        程序段1
    #else
        程序段2
    #endif
這樣寫之后,當要編譯款式1的時候,把PLAN宏聲明成0即可,當要編譯款式2的時候,把宏聲明的值改為1或其它值即可。
第二種表達式和第三種表達式是類似的,使用哪一種要看具體情況或個人偏好。
表達式二:
    #ifdef  標識符
        程序段1
    #else  
        程序段2
    #endif
表達式三:
    #ifndef  標識符
        程序段1
    #else
        程序段2
    #endif
在本章的示例中使用到了表達式三,表達式三的作用是:如果標識符沒有被#define命令所聲明過,則編譯程序段1,否則則編譯程序段2。此外,命令中的#else部分是可以省略的。表達式二和表達式三正好相反,實際#ifndef就是if no define的縮寫。
在頭文件的編寫過程中,為了防止命名的錯亂,每個.c文件對應的.h文件內的條件編譯的命名,也使用這個頭文件的名字,并且大寫,在中間加上下劃線,比如這個main.h的結構,首先要這樣寫:
#ifndef _MAIN_H    /*本段程序是寫在main.h文件中,程序段1為外部變量;外部函數;自定義數據類型等*/
#define _MAIN_H
    程序段1
#endif
這樣說明的意思是,如果這個_MAIN_H沒有聲明過,那么就聲明_MAIN_H,并且的程序段1是有效的,最終結束;那么如果_MAIN_H已經聲明過了,那么也就不用再聲明了,同時程序段1也就無效了。
前邊頭文件重復包含的問題這樣就被解決了,編譯器在預編譯a.h時進行了#define _MAIN_H,而在預編譯b.h時,#ifndef _MAIN_H這一個條件就不成立,也就不會編譯b.h當中的這部分內容,這樣就有效的解決了頭文件重復包含的問題。






歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1