国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 巴楚县| 辽阳市| 麻栗坡县| 台湾省| 视频| 沾化县| 丽水市| 张北县| 绿春县| 天水市| 乌拉特前旗| 七台河市| 奉新县| 姚安县| 台山市| 南漳县| 沂南县| 屏南县| 澎湖县| 临颍县| 黑龙江省| 韩城市| 新乡县| 密云县| 康定县| 玉树县| 宜兴市| 高密市| 曲松县| 双牌县| 合水县| 房山区| 祁东县| 柘城县| 保德县| 天门市| 夏河县| 安康市| 马龙县| 伊通| 宁远县|