導航:首頁 > 源碼編譯 > c語言條件編譯可以嵌套嗎

c語言條件編譯可以嵌套嗎

發布時間:2024-12-14 08:29:23

① c語言中,什麼是條件編譯

條件編譯屬於三種宏定義中的一種,條件指示符的最主要目的是防止頭文件的重復包含和編譯,例如:一個c文件包含同一個h文件多次,如果不加#ifndef宏定義,會出現變數重復定義的錯誤

條件編譯常用的有四個預處理命令:#if、#else、#elif、#endif。
#if指令的形式為:
#if 常量表達式
代碼塊
#endif
#if後面的常量表達式為值,則編譯它與#endif之間的代碼,否則跳過這些代碼。指令#endif標識一個#if塊的結束。

#else被使用來標志#if的末尾和#else塊的開始。這是必須的,因為任何#if僅有一個#endif與之關聯。

#elif意指"else if",它形成一個if else if嵌套語句用於多種編譯選擇。#elif後面跟一個常量表達式,如果表達式是真,則編譯其後的代碼塊,不對其他#elif表達式進行檢測,否則順序測試下一塊。常見的形式如下:
形式1:
#ifdef 標識符
/*程序段 1*/
#else
/*程序段 2*/
#endif
它的作用是當標識符已經由#define定義過了,則編譯程序段1,否則編譯程序段2,也可以使用簡單形式
#ifdef 標識符
/*程序段1*/
#endif

形式2:
#ifndef 標識符
#define 標識符
/*程序段 1*/
#else
/*程序段 2*/
#endif
它的作用是當標識符沒有由#define定義過,則編譯程序段1,否則編譯程序段2 ,也可以使用簡單形式
#ifndef 標識符
#define 標識符
/*程序段 1*/
# endif
形式3:
#if 表達式
/*程序段 1*/
#else
*程序段 2*/
# endif
它的作用是 當「表達式」值為真時編譯程序段1。否則則編譯程序段2,也可以使用簡單形式
# if 表達式
/*程序段 1*/
# endif
形式4:
#if 表達式1
/*程序段 1*/
#elif 表達式2
/*程序段 2*/
............
#elif 表達式n
/*程序段n */
#endif
它的作用是當「表達式1」值為1時編譯程序段1,表達式2的值為真是編譯程序段2,否則依次順序判斷到表達式n。

最後,條件編譯的條件是一個常量表達式,支持邏輯與&&和或||運算。以上四種形式的條件編譯預處理結構都可以嵌套使用,
標識符: 在理論上來說可以是自由命名的,但每個頭文件的這個標識符都應該是唯一的。標識的命名規則一般是頭文件名全大寫,前後加下劃線,並把文件名中的「.」也變成下劃線,如:stdio.h。
#ifndef _STDIO_H_
#define _STDIO_H_
/*程序段 */
#endif

② 預處理指令有什麼作用

對相關命令或語句的含義和功能作具體分析。

③ C語言中的條件編譯 #if define(宏名稱)為什麼錯誤了

預編譯指令格式錯誤。
#if define (IBMPC)應改為#ifdef IBMPC
這種結構是為了防止頭文件嵌套包含。一般的用法是
#ifndef _IBMPC_H
#define _IBMPC_H
#include"ibmpc.h"
....
#endif

④ C語言中條件編譯的作用

條件編譯屬於三種宏定義中的一種,條件指示符的最主要目的是防止頭文件的重復包含和編譯,例如:一個c文件包含同一個h文件多次,如果不加#ifndef宏定義,會出現變數重復定義的錯誤


條件編譯常用的有四個預處理命令:#if、#else、#elif、#endif。

#if指令的形式為:

#if常量表達式
代碼塊
#endif

#if後面的常量表達式為值,則編譯它與#endif之間的代碼,否則跳過這些代碼。指令#endif標識一個#if塊的結束。


#else被使用來標志#if的末尾和#else塊的開始。這是必須的,因為任何#if僅有一個#endif與之關聯。


#elif意指"else if",它形成一個if else if嵌套語句用於多種編譯選擇。#elif後面跟一個常量表達式,如果表達式是真,則編譯其後的代碼塊,不對其他#elif表達式進行檢測,否則順序測試下一塊。常見的形式如下:

形式1:

#ifdef標識符
/*程序段1*/
#else
/*程序段2*/
#endif

它的作用是當標識符已經由#define定義過了,則編譯程序段1,否則編譯程序段2,也可以使用簡單形式

#ifdef標識符
/*程序段1*/
#endif

形式2:

#ifndef標識符
#define標識符
/*程序段1*/
#else
/*程序段2*/
#endif

它的作用是當標識符沒有由#define定義過,則編譯程序段1,否則編譯程序段2 ,也可以使用簡單形式

#ifndef標識符
#define標識符
/*程序段1*/
#endif

形式3:

#if表達式
/*程序段1*/
#else
*程序段2*/
#endif

它的作用是 當「表達式」值為真時編譯程序段1。否則則編譯程序段2,也可以使用簡單形式

#if表達式
/*程序段1*/
#endif

形式4:

#if表達式1
/*程序段1*/
#elif表達式2
/*程序段2*/
............
#elif表達式n
/*程序段n*/
#endif

它的作用是當「表達式1」值為1時編譯程序段1,表達式2的值為真是編譯程序段2,否則依次順序判斷到表達式n。


最後,條件編譯的條件是一個常量表達式,支持邏輯與&&和或||運算。以上四種形式的條件編譯預處理結構都可以嵌套使用,

標識符: 在理論上來說可以是自由命名的,但每個頭文件的這個標識符都應該是唯一的。標識的命名規則一般是頭文件名全大寫,前後加下劃線,並把文件名中的「.」也變成下劃線,如:stdio.h。

#ifndef_STDIO_H_
#define_STDIO_H_
/*程序段*/
#endif
閱讀全文

與c語言條件編譯可以嵌套嗎相關的資料

熱點內容
怎麼編成一個mc伺服器 瀏覽:199
施工壓縮工期 瀏覽:552
python導入包代碼 瀏覽:60
武漢解壓體驗館創業 瀏覽:983
如何弄到一個伺服器 瀏覽:805
psp里的文件夾怎麼刪除 瀏覽:647
安卓手機如何在鎖屏的情況下拍攝視頻 瀏覽:459
安卓為什麼不能安裝procreate 瀏覽:529
如何修復王者榮耀的伺服器 瀏覽:654
javaif多個條件 瀏覽:506
顯示pdf縮略圖 瀏覽:533
奇跡移動命令圖片 瀏覽:857
多玩怎麼開到伺服器 瀏覽:656
基於單片機的水塔水位控制系統設計 瀏覽:480
yd什麼伺服器 瀏覽:520
muduo源碼分析 瀏覽:376
androidselector屬性 瀏覽:536
像素工廠如何加入伺服器 瀏覽:485
移動伺服器地址和埠號 瀏覽:656
互聯醫療app哪個好 瀏覽:212