#define STR_SWITCH(str) {/ TCHAR* __ps = (TCHAR*)((const TCHAR*)str);/ while(1) { #define STR_CASE(str) if(0 == _tcsicmp(__ps,((const TCHAR*)str))) #define STR_CASE_EXACT(str) if( 0 == _tcscmp( __ps,((const TCHAR*)str) ) ) #define DEFAULT_CASE() #define STR_SWITCH_END() break; } } Myclass::Function() { CString sSwitch("bbbb"); CString sCase("AAAA"); STR_SWITCH(sSwitch) //Start of switch { //Opening and closing braces //NOT MANDATORY for switch. STR_CASE(sCase) { //Opening and closing braces //MANDATORY for case. AfxMessageBox("In first case statement"); break; //break has to in braces of case } //Opening and closing braces //MANDATORY for case. break; //疑问,是否需要 sCase = _T("bbbb"); //Statements allowed here ;) STR_CASE_EXACT(sCase) { AfxMessageBox("In second case statement"); break; } DEFAULT_CASE() { //Default handling if any break; } } //Opening and closing braces //NOT MANDATORY for switch STR_SWITCH_END() //MANDATORY statement } / #define STR_SWITCH(str) {/ TCHAR* __ps = (TCHAR*)((const TCHAR*)str);/ while(1) #define STR_CASE(str) if( 0 == _tcscmp( __ps,((const TCHAR*)str) ) ) //UNICODE字符集 #define STR_CASE_ANSI(str) if(0 == _tcsicmp(__ps,((const TCHAR*)str))) //ansi字符集 #define DEFAULT_CASE() Myclass::Function() { CString sSwitch(_T("bbbb")); CString sCase(_T("AAAA")); STR_SWITCH(sSwitch) //Start of switch { STR_CASE(sCase) { AfxMessageBox("In second case statement"); break; } DEFAULT_CASE() { //Default handling if any break; } } //Opening and closing braces }