<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 5.C語言條件編譯詳解 預處理程序提供了條件編譯的功能。可以按不同的條件去編譯不同的程序部分,因而產生不同的目標代碼文件。這對于程序的移植和調試是很有用的。條件編譯有三種形式,下面分別介紹。 ## 第一種形式 第一種形式的格式為: ? ? #ifdef? 標識符 ? ? ? ? 程序段1 ? ? #else ? ? ? ? 程序段2 ? ? #endif 它的功能是,如果標識符已被 #define命令定義過則對程序段1進行編譯;否則對程序段2進行編譯。如果沒有程序段2(它為空),本格式中的#else可以沒有,即可以寫為: ? ? #ifdef? 標識符 ? ? ? ? 程序段 ? ? #endif 【例9-12】 ~~~ #define NUM ok main(){ struct stu{ int num; char *name; char sex; float score; } *ps; ps=(struct stu*)malloc(sizeof(struct stu)); ps->num=102; ps->name="Zhang ping"; ps->sex='M'; ps->score=62.5; #ifdef NUM printf("Number=%d\nScore=%f\n",ps->num,ps->score); #else printf("Name=%s\nSex=%c\n",ps->name,ps->sex); #endif free(ps); } ~~~ 由于在程序的第14行插入了條件編譯預處理命令,因此要根據NUM是否被定義過來決定編譯那一個printf語句。而在程序的第一行已對NUM作過宏定義,因此應對第一個printf語句作編譯故運行結果是輸出了學號和成績。 在程序的第1行宏定義中,定義NUM表示字符串OK,其實也可以為任何字符串,甚至不給出任何字符串,寫為: ~~~ #define NUM ~~~ 也具有同樣的意義。只有取消程序的第1行才會去編譯第二個printf語句。讀者可上機試作。 ## 第二種形式 第二種形式的格式為: ? ? #ifndef 標識符 ? ? ? ? 程序段1? ? ? #else? ? ? ? ? 程序段2? ? ? #endif 與第一種形式的區別是將“ifdef”改為“ifndef”。它的功能是,如果標識符未被#define命令定義過則對程序段1進行編譯,否則對程序段2進行編譯。這與第一種形式的功能正相反。 ## 第三種形式 第三種形式的格式為: ? ? #if 常量表達式 ? ? ? ? 程序段1 ? ? #else? ? ? ? ? 程序段2 ? ? #endif 它的功能是,如常量表達式的值為真(非0),則對程序段1 進行編譯,否則對程序段2進行編譯。因此可以使程序在不同條件下,完成不同的功能。 【例9-13】 ~~~ #define R 1 main(){ float c,r,s; printf ("input a number: "); scanf("%f",&c); #if R r=3.14159*c*c; printf("area of round is: %f\n",r); #else s=c*c; printf("area of square is: %f\n",s); #endif } ~~~ 本例中采用了第三種形式的條件編譯。在程序第1行宏定義中,定義R為1,因此在條件編譯時,常量表達式的值為真,故計算并輸出圓面積。 上面介紹的條件編譯當然也可以用條件語句來實現。 但是用條件語句將會對整個源程序進行編譯,生成的目標代碼程序很長,而采用條件編譯,則根據條件只編譯其中的程序段1或程序段2,生成的目標程序較短。如果條件選擇的程序段很長,采用條件編譯的方法是十分必要的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看