⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chk_atdestroy.cpp

📁 一个不错
💻 CPP
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2003   Build: make chk_atdestroy*/#include "wystr.h"#include "wy_atdestroy.h"#include <iostream>#if WY_ATDESTROY_VERSION!=31#error Test code is for WY_ATDESTROY_VERSION 31#endifstatic int cf_cnt;static void cf_vi(int) { ++cf_cnt; };static int cf_ii(int) { return ++cf_cnt; };static void cf_vip(int,char*) { ++cf_cnt; };static int cf_ipi(char*,int) { return ++cf_cnt; };struct TestObj { ~TestObj() { ++cf_cnt; };};static void t1(void){ cf_cnt=0; {  Wy_AtDestroy<void,int> rrid(cf_vi,4);  if(cf_cnt!=0) {    WY_THROW( WyRet() );  } } if(cf_cnt!=1) {   WY_THROW( WyRet() ); } {  Wy_AtDestroy<void,int> rrid(cf_vi,4);  if(cf_cnt!=1) {    WY_THROW( WyRet() );  }  rrid.release(); } if(cf_cnt!=1) {   WY_THROW( WyRet() ); } // cf_cnt=0; {  Wy_AtDestroy<int,int> rrid(cf_ii,3);  if(cf_cnt!=0) {    WY_THROW( WyRet() );  } } if(cf_cnt!=1) {   WY_THROW( WyRet() ); } {  Wy_AtDestroy<int,int> rrid(cf_ii,3);  if(cf_cnt!=1) {    WY_THROW( WyRet() );  }  rrid.release(); } if(cf_cnt!=1) {   WY_THROW( WyRet() ); } // cf_cnt=0; {  Wy_AtDestroy2<void,int,char*> rrid(cf_vip,3,"abc");  if(cf_cnt!=0) {    WY_THROW( WyRet() );  } } if(cf_cnt!=1) {   WY_THROW( WyRet() ); } {  Wy_AtDestroy2<void,int,char*> rrid(cf_vip,3,"abc");  if(cf_cnt!=1) {    WY_THROW( WyRet() );  }  rrid.release(); } if(cf_cnt!=1) {   WY_THROW( WyRet() ); } // cf_cnt=0; {  Wy_AtDestroy2<int,char*,int> rrid(cf_ipi,"abc",5);  if(cf_cnt!=0) {    WY_THROW( WyRet() );  } } if(cf_cnt!=1) {   WY_THROW( WyRet() ); } {  Wy_AtDestroy2<int,char*,int> rrid(cf_ipi,"abc",5);  if(cf_cnt!=1) {    WY_THROW( WyRet() );  }  rrid.release(); } if(cf_cnt!=1) {   WY_THROW( WyRet() ); } // typedef names {   struct NameTest {     Wy_AtDestroy<bool,int>::result_type r1;     Wy_AtDestroy<void,int>::argument_type a1;     Wy_AtDestroy2<char,bool*,int>::result_type r2;     Wy_AtDestroy2<void,char*,int>::first_argument_type g1;     Wy_AtDestroy2<void,char*,int>::second_argument_type g2;   }; } // chk _delete_one {  cf_cnt=0;  TestObj *ptr= new TestObj;  if(cf_cnt!=0) {    WY_THROW( WyRet() );  }  Wy::_delete_one(ptr);  if(cf_cnt!=1) {    WY_THROW( WyRet() );  } } // chk _delete_array {  cf_cnt=0;  TestObj *ptr= new TestObj[5];  if(cf_cnt!=0) {    WY_THROW( WyRet() );  }  Wy::_delete_array(ptr);  if(cf_cnt!=5) {    WY_THROW( WyRet() );  } }};static const WyStr chdr(                  "+---------------+\n"                  "| main() caught:|\n"                  "+---------------+\n");int main(void) throw()try { std::cout << "Checking wy_atdestroy.h ...\n"; t1(); std::cout << "Checked Ok\n"; return(0);}catch(const WyRet& e) { std::cerr << chdr.c_str() << Wy::wrd(e).c_str() << std::endl; return(-1);}catch(const std::exception& e) { std::cerr << chdr.c_str() << "std::exception" << std::endl; return(-1);}catch(...) { std::cerr << chdr.c_str() << "unknown unwind" << std::endl; return(-1);};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -