아까 문자열 switch case 만들 때 발견한 버그(?)인데 이게 없으면

아까처럼 구현하기가 힘듦


switch(1)

{

case 0:

if(0){} else {case 1:{}}

default:

break;

}

====================================

버그 활용해서 맹근것

====================================

int a = 0;


for (int i = 0; i < 2; i++)

{

SWITCH("Age")

{

CASE(std::wstring(L"Age")):

CASE(L"Age"):

a = 50;

break;

CASE_NULL:

break;

CASE("Name"):

a = 100;

break;

CASE(std::string("Age")):

a += 200;

CASE("Age1"):

DEFAULT:

a += 300;

continue;

CASE("Age"):

break;

} END_SWITCH;

}

printf("결과: %d ", a);


결과: 1000

====================================

버그를 쓸 수 없을 경우의 구현

====================================


SWITCH("Age")

CASE(std::wstring(L"Age"))

CASE(L"Age")

a = 50;

break;

CASE_NULL

break;

CASE("Name")

a = 100;

break;

CASE(std::string("Age"))

a += 200;

CASE("Age1")

DEFAULT

a += 300;

continue;

CASE("Age")

break;

END_SWITCH;



버그 없어도 되긴 하는데 모양이 나쁨

그래서 나는 저 버그가 꼭 필요함


적용 가능한 툴셋 버전:(테스트 완료한 것들)


Clang 3.7 with Microsoft CodeGen(v140_clang_3_7)

v140

v140_xp

v120

v120_xp

v100

v100_xp

g++

gcc


버그라서 이상하게 동작하지 않을까 싶은데 아직까지는 별 문제 없음.


좀더 혼자 많이 써보다가 github에 공개할 예정임