tft每日頭條

 > 生活

 > c語言宏定義怎麼寫

c語言宏定義怎麼寫

生活 更新时间:2025-02-10 15:33:50

  學C語言很久了,但還是不敢用宏定義,大神喜歡用宏定義。關于宏定義你又了解多少了,下面我們說一下宏定義。

  宏定義的概念了解之後,注意宏定義的坑,這是真的坑,經常莫名其妙的出錯,這可能就要宏定義背鍋樂。

  宏定義用好,幫助我們寫程序是有大作用的,可以簡化我們的程序和代碼。

  c語言宏定義怎麼寫(C語言學習C語言宏定義)(1)

  宏定義是預處理命令的一種,它允許用一個标識符來表示一個字符串。 先看一個例子:

  #include stdio.h

  #define N 100

  int main(){

  int sum = 20 N;

  printf("%d\n", sum);

  return 0;

  }

  運行結果:

  c語言宏定義怎麼寫(C語言學習C語言宏定義)(2)

  上面的程序中首先進行宏定義,定義M來替代表達式(n*n 3*n),在sum=3*M 4*M 5*M

  中作了宏調用。在預處理時經宏展開後該語句變為:

  sum=3*(n*n 3*n) 4*(n*n 3*n) 5*(n*n 3*n);

  需要注意的是,在宏定義中表達式(n*n 3*n)兩邊的括号不能少,否則會發生錯誤。

  對宏定義的幾點說明(這是坑,要牢記) 1) 宏定義是用宏名來表示一個字符串,在宏展開時又以該字符串取代宏名,這隻是一種簡單的替換。字符串中可以含任何字符,可以是常數,也可以是表達式,預處理程序對它不作任何檢查,如有錯誤,隻能在編譯已被宏展開後的源程序時發現。

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

  3) 宏定義必須寫在函數之外,其作用域為宏定義命令起到源程序結束。如要終止其作用域可使用#undef命令。

  4) 宏名在源程序中若用引号括起來,則預處理程序不對其作宏代換,例如:

  #include stdio.h #define OK 100

  int main()

  {

  printf("OK\n");

  return 0;

  }

  該例中定義宏名OK表示100,但在 printf 語句中 OK 被引号括起來,因此不作宏代換,而作為字符串處理。

  5) 宏定義允許嵌套,在宏定義的字符串中可以使用已經定義的宏名,在宏展開時由預處理程序層層代換。

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

  7) 可用宏定義表示數據類型,使書寫方便。例如:#define UINT unsigned int

  在程序中可用UINT作變量說明:UINT a, b;

  應注意用宏定義表示數據類型和用typedef定義數據說明符的區别。宏定義隻是簡單的字符串代換,是在預處理完成的,而typedef是在編譯時處理的,它不是作簡單的代換,而是對類型說明符重新命名。被命名的标識符具有類型定義說明的功能。

  宏定義雖然也可表示數據類型, 但畢竟是作字符代換。在使用時要分外小心,以避出錯。

  好了,今天的宏定義你學會了嗎?一天一天積累,時間總會給你一個滿意的答案。

  文章由源世界編輯,不得私自修改侵權發表,轉載請聯系作者!

  歡迎訂閱點贊,謝謝!

  ,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved