VS2010 C++의 전처리기를 사용하여 버전 문자열을 정의하고 있습니다.VS2010 C++ 전처리 기와 중첩 된 괄호
오류 C2143 : 구문 오류 : 나는 다음과 같은 오류를 얻을 수 sJunk 초기화 할 깨진 사용하는 경우
#define IMPORT_VERSION_1_1 L"IMPORT 1.0" #define EPAPI_VERSION_1_1 L"EPAPI 1.1" #define EPAPI_VERSION_1_2 L"EPAPI 1.2" #define EPAPI_VERSION_1_3 L"EPAPI 1.3" #define EPAPI_VERSION_ALL_1_2 (EPAPI_VERSION_1_2 L"," EPAPI_VERSION_1_3) #define EPAPI_VERSION_ALL_1_2_NoParens EPAPI_VERSION_1_2 L"," EPAPI_VERSION_1_3 #define EPAPI_VERSION_ALL_1_3 (EPAPI_VERSION_1_3) #define Broken (EPAPI_VERSION_ALL_1_2 L"," IMPORT_VERSION_1_1) #define Works (EPAPI_VERSION_ALL_1_2_NoParens L"," IMPORT_VERSION_1_1) const wchar_t* sJunk = Broken;
: 나는 다음과 같은 # 정의가 문자열
'이전에 누락') ' 오류 C2059 : 구문 오류 : ')'
내가 작품, 아니 오류를 사용하고, 내가 바라고있어 문자열을 얻을 경우
:EPAPI 1.2,EPAPI 1.3,IMPORT 1.0
합니다.
분명히 중첩 된 괄호는 EPAPI_VERSION_ALL_1_2
입니다. 그러나 괄호 안의 매크로에 대한 부작용이 문서화되어 있기 때문에 나는 그것을 피할 수 있다면 제거하고 싶지 않습니다.
누구나 내가 원하는 매크로를 정의하고 괄호를 지키는 방법에 대한 제안을 할 수 있습니까?
THanks