if 和 ifdef 條件編譯注意

2022-01-24 14:15:15 字數 1053 閱讀 9543

之前寫程式很少用到這兩個條件編譯,只是在標頭檔案的開頭使用過 #ifdef ........  #endif,他是防止標頭檔案被重複包含,導致的變數被多處宣告或定義。

最近寫程式發現 #if ...... #endif  也是特別好用的。

#if

他的後面是接乙個表示式

#if (if_need_display)

//使用c語言庫函式 sprintf() 把數字強制轉換為字串輸出,這樣真的可以減少很多任務作量,比上面簡單太多了。

sprintf(distance,"

%.2f

",real_distance);

show_string(

5+72,10

,distance);

#endif

這個後面我跟了乙個定義的巨集,if_need_display,當我需要使用中間那段**的時候,只需把這個變數巨集定義為1就可以了。

就是當表示式為真(非零值)時,那麼編譯器就會把 #if 與 #endif 之間的**編譯進去。它多用在需要除錯的**中。

因為有些**非常佔程式的體積,或者非常消耗微控制器的資源 ,但是它在除錯的時候又比較有用,除錯完之後,就用不到了,比如串列埠,顯示屏什麼的。

這個時候, #if 就顯得特別的貼心,溫暖。

#ifdef

#ifdef 後面跟乙個巨集,這個巨集可以沒有值,只要在前面這個巨集被定義了出來,就編譯中間的**。

#define if_need_display#ifdef if_need_display

//使用c語言庫函式 sprintf() 把數字強制轉換為字串輸出,這樣真的可以減少很多任務作量,比上面簡單太多了。

sprintf(distance,"

%.2f

",real_distance);

show_string(

5+72,10

,distance);

#endif

這裡,我巨集定義了if_need_flag ,所以會編譯中間的**,否則忽略。

webrtc編譯注意

depot tools環境變數 path中增加g google depot tools windows kits目錄 set windowssdkdir d windows kits 10 工具鏈相關 set depot tools win toolchain 0 set gyp generator...

條件編譯 ifdef用法

這幾個巨集是為了進行條件編譯。一般情況下,源程式中所有的行都參加編譯。但是有時希望對其中一部分內容只在滿足一定條件才進行編譯,也就是對一部 分內容指定編譯的條件,這就是 條件編譯 有時,希望當滿足某條件時對一組語句進行編譯,而當條件不滿足時則編譯另一組語句。條件編譯命令最常見的形式為 ifdef 識...

Android編譯注意事項

1 make bootimage 編譯生成kernel.img和boot.img的整合 會在out目錄下生成以下檔案。target ram disk out target product em t8350 emmc ramdisk.img target boot image out target p...