關於C99可變引數巨集的例項程式碼講解

我要的暱稱被註冊了發表於2020-12-17

具體請看如下程式碼,通過對比程式碼和執行結果圖更加容易理解。

//This is a comment
//Author:King
//Time:2020/12/17
//Reference:C Programming:A Modern Approach,Second Edition

/***************************************************************
2.5小節程式碼 計算一個箱子空間重量的程式 ,由使用者輸入變數的引數值 
輸入引數限定為數值 
****************************************************************/

#include <stdio.h>

//C99支援可變引數巨集,如下巨集定義中printf()中的fmt是嵌入在一段字串中,
//然後##arg表示如果arg這個可變引數被忽略或為空,將使前處理器去除掉它前面的那個逗號,
//這樣就符合語法規則了。
#define VOLUME(fmt,arg...)           printf("<<-VOLUME->> "fmt"\n",##arg)
#define DIMENSION(fmt,arg...)        printf("<<-DIMENSION->> "fmt"\n",##arg)

int main(void)
{
	int height,length,width,volume,weight;
	
	printf("Enter height of box:");
	scanf("%d",&height);
	printf("Enter length of box:");
	scanf("%d",&length);
	printf("Enter width of box:");
	scanf("%d",&width);

	volume =  height * length * width;
	weight = (volume +165) / 166;	//航空公司一種空間轉換為重量的演算法,用於計算價格
	
	printf("\n\n");
	printf("Volume (cubic inches):%d\n",volume);
	printf("Dimensions weight (pounds):%d\n",weight);
	
	
	printf("\n\n");
	VOLUME("Volume (cubic inches):%d",volume);
	DIMENSION("Dimensions weight (pounds):%d",weight);
	
	system("pause");
	return 0;
}

程式碼執行結果

相關文章