一文讀懂Define的所有用法

  • 2019 年 10 月 8 日
  • 筆記

define的常見用法

  • 1.基本用法undefined在編譯時期進行替換。如:#define Sum(a,b) a+b //定義為一個基本替換,把Sum(a,b) 替換成a+b.#define INTERFACE //就是說名這是一個接口,只是起到注釋作用 #define STR(s) #s //表示s是一個字符串 //如: int a = 0; cout<<"the value of "<< STR(a) << " is: " << a<<endl; #define JOIN(A,B) A##B //表示把A 和B 進行連接 //使用如下 #define XNAME(n) x##n //標識把兩個語言符號連在一起 形成新的 xn int XNAME(1) = 10; //int x1=10;#define DoSum(a,b,c) do { c = a+b; }while(0);#define PR(…) printf(__VA_ARGS__) #define PRV2(x,…) printf(x,##__VA_ARGS__) //表示#define DEBUG std::cout<<"define debug" <<endl; #else std::cout<<"not define" <<endl; #endif //編譯時,可以在makefile中添加宏定義選項進行傳遞 ,使用 -D參數 -DDEBUG 比如: gcc -DDUBG//可以直接在代碼中使用。 __FILE__ //宏在預編譯時會替換成當前的源文件名 __LINE__ //宏在預編譯時會替換成當前的行號 __FUNCTION //__宏在預編譯時會替換成當前的函數名稱
  • 2.閱讀方便undefined有時候宏定義只是為了閱讀方便起到注釋作用,並沒有實際含義,如:
  • 3.字符串指示與連接
  • 4.多行預定義undefined一般用來預定一個類函數的語句塊。主要是為了使用方便。
  • 5.可變變量
  • 6.宏條件定義
  • 7.其他系統定義