c語言中宏定義和常量定義的區別

來源:互聯網
上載者:User

標籤:include   turn   參數   ons   定義   處理   就是   define   abc   

  他們有共同的好處就是“一改全改,避免輸入錯誤”哪兩者有不同之處嗎?有的。

  主要區別就在於,宏定義是在編譯之前進行的,而const是在編譯階段處理的

宏定義不佔用記憶體單元而const定義的常量佔用記憶體單元

宏定義與const常量有著相同的作用-----用一個符號表示資料,但是,有些書上說定義常數陣列不能用const,經過測試也是可以的,環境是vs2015

  常量定義定義數組的長度

  const int N=66;

  int arr[N];

有的書上說是錯誤的,但經過我在vs2015上測試是可以的

  宏定義定義數組的長度

  #define N 66

  int arr[N];

帶參數的宏定義

格式:

#define 宏名(參數列表) 要更換的內容

#define SUM(a,b) a+v

程式碼如下:

S=SUM(6,8);

將宏定義中的a和b分別替換成6和8,替換後的代碼是:

s=6+8;

#define沒有資料類型,只是單純的替換

#include "stdafx.h"#include<stdlib.h>#define add(a,b) (a)>(b)?(a):(b)int main(){       printf("%s", add("abc", "bcd"));    system("pause");    return 0;}
#include "stdafx.h"#include<stdlib.h>#define add(a,b) (a)>(b)?(a):(b)int main(){    printf("%d", add(1+2, 3+4));    system("pause");    return 0;}

這些都是可以的

所以一般建議使用函數不建議使用宏定義

 

 

 

 

 

 

 

c語言中宏定義和常量定義的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.