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

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

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

2019-11-10 22:15:50
字體:
來源:轉載
供稿:網友
#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;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 通州市| 通州市| 西畴县| 泗洪县| 湘潭县| 张家口市| 娄底市| 商洛市| 颍上县| 包头市| 潮州市| 上犹县| 武汉市| 同仁县| 苍溪县| 宁武县| 民权县| 深水埗区| 墨玉县| 苏尼特右旗| 若羌县| 曲沃县| 浪卡子县| 如东县| 双流县| 永寿县| 萨迦县| 澄城县| 太原市| 安西县| 荥经县| 桦甸市| 保康县| 黔东| 错那县| 永登县| 马关县| 确山县| 资兴市| 汤原县| 宁海县|