C語義的預處理 - 宏定義中 # 和 ## 的意義及用法

宏定義基本語法

C 語言中,所有預定義的宏,都會在預處理階段進行替換。宏定義的語法爲:

#define 宏名 字符串

簡單宏定義

下面的示例中,預處理後,所有出現 MAX 的位置都會被替換爲 100:

#include <stdio.h>
#define MAX 100

int main() {
	printf("MAX is: %d\n", MAX);
	return 0;
}

宏定義中使用變量

#include <stdio.h>
#define CHANGE(x) (x * x)

int main() {
	printf("CHANGE(10) is: %d\n", CHANGE(10));
	return 0;
}

宏定義中使用 #

# 表示字符串化,單純的使傳過來的變量變成字符串。

#include <stdio.h>
#define CHANGE(x) #x

int main() {
	printf(CHANGE(xyz));
	return 0;
}

宏定義中使用 ##

## 是普通的鏈接符號,表示單純的鏈接前後的字符串。因爲是在預處理階段替換完成的,可以間接的使用變量。

#include <stdio.h>
#define DAY(x) day ## x

int main() {
	int day1 = 11;
	int day2 = 22;
	printf("day is:%d\n", DAY(1));
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章