常常會忘記用法,雖然也不太用就是了啦.....
一個#:
其中一個用法是把後面接的東西換成一個字串
舉例來說:
#define print(n) printf(#n " = %d\n", n);
會被換成
print(x/y) = printf("x/y" " = %d\n", x/y);
上面的n換成x/y,但是#n就會換成"x/y"
兩個#:
它叫做"token pasting",所以就是把東西貼在一起囉!
舉例來說:
#define MAX(type) \ <-----一定要打,因為preprocessor正常是要打成一行的
type type##_max(type x, type y) { \
return x > y ? x : y; \
}
如果是MAX(int) 就會被擴展成
int int_max(int x, int y) {
return x > y ? x : y;
}
為什麼要有這個功能呢?
以上面的code來說
直接打type_max不會轉成int_max,因為他會把type_max看成一個字串,所以要跟他講type是我要你改的東西,再和後面的_max連起來
沒有留言:
張貼留言