乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      c語言宏定義、條件編譯

       印度阿三17 2020-03-10

      筆記整理:

      C語言帶參數(shù)宏定義

      宏定義

      宏定義的一般形式為:
      #define 宏名 字符串或者表達(dá)式
      預(yù)處理的工作就是替換,就是將宏名替換成相應(yīng)的字符串與表達(dá)式。

      宏定義字符串:

      #define 宏名 字符串

      該示例中的語句int sum = 20 N;,N被100代替了

      #include <stdio.h>
      #define N 100
      int main(){
          int sum = 20   N;
          printf("%d\n", sum);
          return 0;
      }

      宏定義表達(dá)式:

      #define  宏名  (表達(dá)式)
      #include <stdio.h>
      #define M (n*n 3*n)
      int main(){
          int sum, n;
          printf("Input a number: ");
          scanf("%d", &n);
          sum = 3*M 4*M 5*M;
          printf("sum=%d\n", sum);
          return 0;
      }

      注意:宏定義中表達(dá)式必須用括號

      對宏定義的幾點說明

      1) 宏定義是用宏名來表示一個字符串,在宏展開時又以該字符串取代宏名,這只是一種簡單粗暴的替換。字符串中可以含任何字符,它可以是常數(shù)、表達(dá)式、if 語句、函數(shù)等,預(yù)處理程序?qū)λ蛔魅魏螜z查,如有錯誤,只能在編譯已被宏展開后的源程序時發(fā)現(xiàn)。

      2) 宏定義不是說明或語句,在行末不必加分號,如加上分號則連分號也一起替換。

      3) 宏定義必須寫在函數(shù)之外,其作用域為宏定義命令起到源程序結(jié)束。如要終止其作用域可使用#undef命令。例如:
      表示 PI 只在 main() 函數(shù)中有效,在 func() 中無效。

      #define PI 3.14159
      int main(){
          // Code
          return 0;
      }
      #undef PI
      void func(){
          // Code
      }

      4)代碼中的宏名如果被引號包圍,那么預(yù)處理程序不對其作宏代替。

      5)宏定義允許嵌套,在宏定義的字符串中可以使用已經(jīng)定義的宏名,在宏展開時由預(yù)處理程序?qū)訉哟鷵Q。例如:

      #define PI 3.1415926
      #define S PI*y*y    /* PI是已定義的宏名*/
      對語句:
      printf("%f", S);
      在宏代換后變?yōu)椋?printf("%f", 3.1415926*y*y);

      6) 習(xí)慣上宏名用大寫字母表示,以便于與變量區(qū)別。但也允許用小寫字母。

      7) 可用宏定義表示數(shù)據(jù)類型,使書寫方便。例如:

      #define UINT unsigned int

      在程序中可用 UINT 作變量說明:

      UINT a, b;

      應(yīng)注意用宏定義表示數(shù)據(jù)類型和用 typedef 定義數(shù)據(jù)說明符的區(qū)別。宏定義只是簡單的字符串替換,由預(yù)處理器來處理;而 typedef 是在編譯階段由編譯器處理的,它并不是簡單的字符串替換,而給原有的數(shù)據(jù)類型起一個新的名字,將它作為一種新的數(shù)據(jù)類型。


      帶有參數(shù)的宏定義


      C語言允許宏帶有參數(shù)。在宏定義中的參數(shù)稱為“形式參數(shù)”,在宏調(diào)用中的參數(shù)稱為“實際參數(shù)”,這點和函數(shù)有些類似。

      對帶參數(shù)的宏,在展開過程中不僅要進(jìn)行字符串替換,還要用實參去替換形參。

      帶參宏定義的一般形式為:
      #define 宏名(形參列表) 字符串或者表達(dá)式

      在字符串中可以含有各個形參,形參列表中參數(shù)以逗號分隔。

      帶參宏調(diào)用的一般形式為:
      宏名(實參列表);
      例如:

      #define M(y) y*y 3*y //宏定義
      // Code
      k=M(5); //宏調(diào)用 

      注意:

      #include <stdio.h>
      #define SQ(y) (y)*(y)
      int main(){
          int a, sq;
          printf("input a number: ");
          scanf("%d", &a);
          sq = SQ(a 1);
          printf("sq=%d\n", sq);
          return 0;
      }
      sq=(a 1)*(a 1);

      結(jié)果:

      input a number: 9
      sq=100

      #include <stdio.h>
      #define SQ(y) y*y
      int main(){
          int a, sq;
          printf("input a number: ");
          scanf("%d", &a);
          sq = SQ(a 1);
          printf("sq=%d\n", sq);
          return 0;
      }
      sq=a 1*a 1;

      結(jié)果:

      input a number: 9
      sq=19

      條件編譯

      ⑴        #if…#else…格式

      #if 判斷條件
                 代碼段1
      #else
                 代碼段2
      #endif
      或者
      
      #if 判斷條件1
                 代碼段1
      #elif 判斷條件2
                 代碼段2
      #else
                 代碼段3
      #endif

      功能:和if…else…表達(dá)式是一樣的。適用的場景是存在真假的判斷條件,此條件一般情況下是一個表達(dá)式。


      ⑵        #ifdef…#else…或者#ifndef…#else…格式

      #ifdef 標(biāo)識符
                 代碼段1
      #else
                 代碼段2
      #endif
      
      或者
      
      #ifndef 標(biāo)識符
                 代碼段1
      #else
                 代碼段2
      #endif

      功能:判斷條件主要是查看標(biāo)識符是否被定義(#define定義)。

      在現(xiàn)實的工程項目中會使用大量的條件編譯。比如說通過條件編譯來使用各個不同的硬件平臺;通過條件編譯來實現(xiàn)平臺和產(chǎn)品線管理;通過條件編譯來區(qū)分正式版本和調(diào)試版本等等。

      部分預(yù)處理指令

      指令 說明
      # 空指令,無任何效果
      #include 包含一個源代碼文件
      #define 定義宏
      #undef 取消已定義的宏
      #if 如果給定條件為真,則編譯下面代碼
      #ifdef 如果宏已經(jīng)定義,則編譯下面代碼
      #ifndef 如果宏沒有定義,則編譯下面代碼
      #elif 如果前面的#if給定條件不為真,當(dāng)前條件為真,則編譯下面代碼
      #endif 結(jié)束一個#if……#else條件編譯塊

      來源:https://www./content-4-655401.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多