1. 程式人生 > >C語言巨集與typedef

C語言巨集與typedef

typedef

typedef 是給某一個變數型別起別名,原來正統的變數型別名依然可以使用。但是typedef通常的用法是給自己定義的型別起別名。
typedef關鍵字:作用 給變數型別取別名。預處理之後不會被替換(巨集會被替換)。有作用域(巨集沒有作用域,全域性)。

typedef int tni;
typedef int *p;
p q;//(給int * 定義別名p   int *q; == p q;)

C語言巨集

#include <stdio.h>
//預處理:
//  1.展開標頭檔案(如 展開 include <stdio.h>的內容)
//  2.巨集替換:本質就是發生在預處理的單純的字串替換,預處理巨集替換僅單純替換不進行任何操作
//巨集定義: 就是常量,陣列buffer。不以分號結尾 #define R 20 #define N(n) n*10 #define M int main( //1. 宣告巨集函式的時候:給表示式加上括號,防止替換後在優先順序上出現運算錯誤! //2. 巨集相對於函式的優勢:巨集對於函式實參的要求比較寬泛。 // 例如:同一個加法巨集函式,即可以用於兩個整型數求和, // 也可用於兩個浮點型資料的求和,而函式要做到這一點的話必須要對函式的形參型別進行改動! #define ADD(a,b) (a+b) int add(int a,int b) { return a+b; } typedef int
tni;//給型別起別名 M) { tni a = R; int b= N(a);// int b = a*10; printf("b=%d\n",b); int c = add(10.0,10.5); printf("c = %d\n",c);//輸出20,因為被強制轉換為int float d = ADD(10.0,10.5); printf("d = %f\n",d);//輸出20.5 int e = ADD(a,b)*ADD(a,b); printf("e=%d\n",e);// int b = a*10; return 0; }