C/C++函数调用栈的实现方法
本文实例讲述了C/C++函数调用栈的实现方法。可用于实现简单的脚本解释器。分享给大家供大家参考。具体实现方法如下:
头文件声明部分:
#pragmaonce constintBUFFERSIZE=1024; constintgrowfactor=2; //thisstackisusedascallstack. classTStack{ private: size_tsize; //thestacklength size_tpos; //thestacktopposition char*buffer; //thebuffer
private: voidpush(void*D,size_tbytecount); //theimplementationofpush void*pop(size_tbytecount); //theimplementationofpop public: TStack(size_t_size=BUFFERSIZE,size_t_pos=0); //initialize TStack(constTStack&o); //copy TStack&operator=(constTStack&o); //assignment voidpushInt(inti){push(&i,sizeof(int));} //pushanint voidpushLong(longl){push(&l,sizeof(long));} //pushalong voidpushfloat(doublef){push(&f,sizeof(f));} //push adouble voidpushPointer(void*p){push(p,sizeof(p));} //int intpopInt(){return*(int*)pop(sizeof(int));} //popanint longpopLong(){return*(long*)pop(sizeof(long));} //popanint double*popfloat(){return(double*)pop(sizeof(double));} //popadouble void*popPointer(){returnpop(sizeof(void*));} voidclear(){pos=0;} };