// BigSwitchDefine.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "BigSwitchDefine.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // The one and only application object CWinApp theApp; using namespace std; #define G_YEAR_BEGIN_BASE 1989 #define G_YEAR_1 (G_YEAR_BEGIN_BASE + 0) #define G_YEAR_2 (G_YEAR_BEGIN_BASE + 1) #define G_YEAR_3 (G_YEAR_BEGIN_BASE + 2) #define G_YEAR_4 (G_YEAR_BEGIN_BASE + 3) #define G_YEAR_5 (G_YEAR_BEGIN_BASE + 4) #define G_YEAR_6 (G_YEAR_BEGIN_BASE + 5) #define G_YEAR_7 (G_YEAR_BEGIN_BASE + 6) #define G_YEAR_8 (G_YEAR_BEGIN_BASE + 7) #define G_YEAR_9 (G_YEAR_BEGIN_BASE + 8) #define G_YEAR_10 (G_YEAR_BEGIN_BASE + 9) //用来简化大型Switch的Case输入 #define MY_CASE_YEAR(cs1, x, bOk)/ case (x):/ bOk = TRUE;/ cs1.Format("<%s>[%d年]", #x, x);/ break;/ int fnBigSwitchTest(int nYear); int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { // TODO: code your application's behavior here. fnBigSwitchTest(1989); fnBigSwitchTest(2010); } getchar(); return nRetCode; } int fnBigSwitchTest(int nYear) { BOOL bRc = FALSE; CString csYear; switch(nYear) { MY_CASE_YEAR(csYear, G_YEAR_1, bRc) MY_CASE_YEAR(csYear, G_YEAR_2, bRc) MY_CASE_YEAR(csYear, G_YEAR_3, bRc) MY_CASE_YEAR(csYear, G_YEAR_4, bRc) MY_CASE_YEAR(csYear, G_YEAR_5, bRc) MY_CASE_YEAR(csYear, G_YEAR_6, bRc) MY_CASE_YEAR(csYear, G_YEAR_7, bRc) MY_CASE_YEAR(csYear, G_YEAR_8, bRc) MY_CASE_YEAR(csYear, G_YEAR_9, bRc) MY_CASE_YEAR(csYear, G_YEAR_10, bRc) default: bRc = FALSE; csYear.Format("参数无效:[%d]不在给定的参数范围内", nYear); break; } if(bRc) printf("您的输入%s在预定义范围内/n", (LPSTR)(LPCSTR)csYear); else printf("%s/n", (LPSTR)(LPCSTR)csYear); return S_OK; }