#define MY_MACRO int A = 0; 

이런 매크로를 작성하였습니다. 
변수 A는 이 매크로가 존재하는 Brace안에서 유효합니다. 즉, 

myfunc()
{
   MY_MACRO;

   // ToDO Anything
}

이렇게 쓰면 int A는 myfunc안에서는 두번째줄 이후부터는 어디서든 유효하고, myfunc 밖에서는 액세스 할 수 없습니다. 
다만, A라는 변수명은 myfunc안에서 명시적으로 이용되지는 않습니다. 즉, 프로그래머가 A라는 변수명을 몰라도 됩니다. 따라서 이름이 굳이 A일 필요도 없고요. 

이 특성을 그대로 유지하면서, MY_MACRO를 myfunc에서 두 개 이상 쓰고 싶습니다. 
당연하지만 지금 상태에선 변수명이 겹친다는 에러가 발생합니다. 매크로 안에서 변수명을 랜덤으로 생성시킬 수단이 필요한 것입니다. 
변수명은 밖에서 알 필요가 없고 변수 자체만 자신을 호출한 레벨의 브레이스가 끝날때까지 유지되면 그만이기에 랜덤으로 변수명 선언만 가능하면 해결이 됩니다.

* 매크로 안에서 Brace를 열었다 닫으면, myfunc에서는 정작 A가 소멸된 상태이므로 조건을 만족하지 않습니다. 
* 저 매크로를 쓰기 전에 일일이 Brace를 따로 여는 것은 노가다성 실수를 줄이기 위해 디자인된 저 매크로의 특성에 맞지않습니다.  
* 전역변수나 동적메모리 등을 사용하면, myfunc밖에서도 A라는 변수가 살아있을 수 있으므로 조건을 만족하지 않습니다. 꼭 myfunc를 빠져나갈 때 추가 코딩 없이 A를 소멸시켜야 합니다. myfunc을 빠져나가기 전에, 또는 빠져나간 뒤에 소멸되어서도 안됩니다. (...) 
* #define MY_MACRO(x) int A##x = 0;  이런식으로 해서 쓸때마다 직접 숫자를 넣어주는 방법도 있지만.. 실제로는 매크로가 저렇게 간단하지 않은데다 저 매크로가 대개 한 브레이스에서 한 번만 쓰이고 특별한 경우에만 여러번 필요한거라 매번 숫자를 넣는게 귀찮기도 하고 기타 가독성이라든지 일관성 문제가 제대로 해결되지 않습니다. 이쯤에서 타협해서 매크로를 몇개 선언해서 이것저것 쓰면 해결은 되지만, 뭐랄까 프로그래머로서 깔끔하게 해결하고픈 욕심이랄까요. 그런거지요. (참고로 여기에 __LINE__매크로를 조합한뒤에 이것을 다시 또 매크로 선언 할 수 있으면 완전 해결인데, 그렇게 하면 컴파일 옵션 변경 없이는 컴파일이 안됩니다. 스코프가드가 이렇습니다.)

Visual Studio에서 컴파일 옵션을 따로 변경하지 않고도 쓸 수 있는 방법이 있을지 궁금합니다. 


한줄요약 : 변수명을 랜덤하게 선언할 수 있다면 방법을 알려주세요!