国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C/C++ 用宏定義實現簡單泛型的功能

2019-11-11 01:08:54
字體:
來源:轉載
供稿:網友
#include <iostream>#include <cstdio>#include <cstdlib>#include <assert.h>using namespace std;//宏定義實現泛型//在宏定義中出現#和##,通常起到下面的作用:// #表示:對應變量字符串化// ##表示:把宏參數名與宏定義代碼序列中的標識符連接在一起,形成一個新的標識符#define GNERIC_STACK(STACK_TYPE,SUFFIX,STACK_SIZE)  /	static STACK_TYPE stack##SUFFIX[STACK_SIZE];    /	static int top_element##SUFFIX=-1;			    /	bool is_empty##SUFFIX(){						/		return top_element##SUFFIX==-1;			    /	}                       					    /													/	bool is_full##SUFFIX(){							/		return top_element##SUFFIX==STACK_SIZE-1;	/	}												/													/	void push##SUFFIX(STACK_TYPE val){				/		assert(!is_full##SUFFIX());					/		top_element##SUFFIX+=1;						/		stack##SUFFIX[top_element##SUFFIX]=val;		/	}												/													/	void pop##SUFFIX(){								/		assert(!is_empty##SUFFIX());				/		top_element##SUFFIX-=1;						/	}												/													/	STACK_TYPE top##SUFFIX(){						/		assert(!is_empty##SUFFIX());   				/		return stack##SUFFIX[top_element##SUFFIX];	/	}//注意,下面的宏定義式子不能放到main()函數內,因為這個宏定義展開后包含其他函數的定義,故不能//宏定義生成兩個不同類型的堆棧//其結尾加不加';'都可以,注意下面的宏定義會被展開成什么(文本替換)GNERIC_STACK(int,_int,10)//##起到連接作用,比如is_empty##SUFFIX(),SUFFIX為_int,即最后生成is_empty_int()GNERIC_STACK(double,_double,10)//同上void test(){	push_int(5);	push_int(10);	push_int(22);	push_double(22.2);	push_double(-33.3);	push_double(-45.4);	while(!is_empty_int()){		cout<<top_int()<<" ";		pop_int();	}	cout<<endl;	while(!is_empty_double()){		cout<<top_double()<<" ";		pop_double();	}	cout<<endl;}int main() {	test();	return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 郯城县| 祁东县| 桑日县| 襄汾县| 朝阳区| 瑞昌市| 桑植县| 精河县| 托里县| 汪清县| 东方市| 彝良县| 河北区| 香港| 乌兰浩特市| 汉源县| 辽中县| 锡林浩特市| 咸阳市| 峨眉山市| 安阳县| 中山市| 贵港市| 和龙市| 五华县| 海盐县| 吉木萨尔县| 丹寨县| 锡林郭勒盟| 民丰县| 平定县| 辽宁省| 台中市| 平凉市| 武清区| 甘德县| 上饶县| 牟定县| 洞头县| 湘潭市| 娄烦县|