#ifndef _REENTRANT_EX #define _REENTRANT_EX #endif #include #include "ZCppMain/ZCStringStd.H" #include "ZCppMain/ZCProcess.H" using namespace std ; using namespace ZNsMain; namespace ZNsMain { namespace ZNsExam { template class ZtCExamThread { public: class CThreadMy : public ZNsMain::ZtCThreadEx { public : typedef ZNsMain::ZtCThreadEx TypeBase; public : friend class ZNsMain:: ZtCThreadEx; private: void Init() { this->TypeBase::Init(); cout<<"* Init0()"<TypeBase::Exec(); cout<<"* Exec0()"<TypeBase::Fini(); cout<<"* Fini0()"<TypeBase::template Init(AR_KeyCStr); cout<<"* Init1() : "<TypeBase::template Exec(AR_KeyCStr); cout<<"* Exec1() : "<TypeBase::template Fini(AR_KeyCStr); cout<<"* Fini1() : "<TypeBase::template Init (AR_KeyCStr, AR_KeyCStr2); cout<<"* Init2() : "<TypeBase::template Exec (AR_KeyCStr, AR_KeyCStr2); cout<<"* Init2() : "<TypeBase::template Fini (AR_KeyCStr, AR_KeyCStr2); cout<<"* Init2() : "<TypeBase::template Init ( AR_KeyCStr, AR_KeyCStr2, AR_KeyCStr3 ) ; cout<<"* Init3() : "<TypeBase::template Exec ( AR_KeyCStr, AR_KeyCStr2, AR_KeyCStr3 ) ; cout<<"* Init3() : "<TypeBase::template Fini ( AR_KeyCStr, AR_KeyCStr2, AR_KeyCStr3 ) ; cout<<"* Init3() : "<*/ static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0) { CThreadMy VO_CThreadMy1 ; CThreadMy VO_CThreadMy2 ; CThreadMy VO_CThreadMy3 ; CThreadMy VO_CThreadMy4 ; ZCStringStd VO_ZCStringStd1("Help Data1"); ZCStringStd VO_ZCStringStd2("Help Data2"); ZCStringStd VO_ZCStringStd3("Help Data3"); VO_CThreadMy1.Make(); cout<<"# Press Enter to continue."< class ZtCExamThread*/ }/* namespace ZNsExam*/ }/* namespace ZNsMain*/ int main(int AI_ArgCnt, char* APP_ArgVal[]) { return ZNsMain::ZNsExam:: ZtCExamThread<>::Main(AI_ArgCnt, APP_ArgVal); }/* int main(int AI_ArgCnt, char* APP_ArgVal[])*/ /*//////////////////////////////////////////////////////////////////////////////////////// ■ cygwin 컴파일 // g++ -mno-cygwin -o ZtCThreadEx_000.exe ZtCThreadEx_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 // g++ -mno-cygwin -o ZtCThreadEx_000_D.exe ZtCThreadEx_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG ■ mingw 컴파일 g++.exe -std=c++98 -o ZtCThreadEx_000_mw.exe ZtCThreadEx_000.cpp -I../ g++.exe -std=c++98 -o ZtCThreadEx_000_mw_D.exe ZtCThreadEx_000.cpp -I../ -D_DEBUG ./ZtCThreadEx_000_mw.exe ./ZtCThreadEx_000_mw_D.exe Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest # date Sun Aug 24 10:47:09 KST 2025 Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest # g++ --version g++.exe (Rev2, Built by MSYS2 project) 13.2.0 Copyright (C) 2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ■ Linux 컴파일 g++ -std=c++98 -o ZtCThreadEx_000.exe ZtCThreadEx_000.cpp -I../ -lpthread g++ -std=c++98 -o ZtCThreadEx_000_D.exe ZtCThreadEx_000.cpp -I../ -lpthread -D_DEBUG sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date Sun Aug 24 00:05:51 DST 2025 sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.6 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.6 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal [sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release CentOS Linux release 7.9.2009 (Core) [sauron@q381-2657 ZCppMainTest]$ g++ --version g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ■ 실행 ./ZtCThreadEx_000.exe ./ZtCThreadEx_000_D.exe ////////////////////////////////////////////////////////////////////////////////////////*/