2012-11-07 3 views
14

내 문제입니다 이 문자열의. 나는 그 기능에 L"Title"을 전달할 수 있기를 원합니다. 당연히 새로운 매크로 W_TITLETITLE으로 정의하려고합니다.C 프리 프로세서 리터럴 건설

하지만 운이 없으므로 내 접근법 (아래 나열)이 모두 실패했습니다. 어떻게 그러한 마법을 이룰 수 있는지 말해주십시오.

#define WIDEN_(exp) L##exp 
#define WIDEN(exp) WIDEN_(exp) 
#define TITLE   "Title" 
#define W_TITLE  WIDEN(TITLE) 

을 당신이있어 무엇을 얻기 위해 중간 매크로를 통해 확장을 강제해야

나는

+0

당신이있어 읽을 것 같아서'http://gcc.gnu.org/onlinedocs/cpp/Stringification.html – alk

답변

11

이 시도 ...

#define W_TITLE L##TITLE 
#define W_TITLE #L TITLE 
#define W_TITLE ##L TITLE 

그러나 그들은 모두 실패 시도 찾고.

#include <stdio.h> 

#define WIDEN_(exp) L##exp 
#define WIDEN(exp) WIDEN_(exp) 
#define TITLE   "Title" 
#define W_TITLE  WIDEN(TITLE) 

int main(int argc, char *argv[]) 
{ 
    printf("%s\n", TITLE); 
    wprintf(L"%ls\n", W_TITLE); 
    return 0; 
} 

결과 :

Title 
Title 
+2

COUT을 <<'... 그건 좀 이상한 찾고 C 코드 .... – Mike

+4

@ 마이크 롤. 아프다. 오늘 아침에 커피가 충분하지 않아. – WhozCraig

+0

@WhozCraig Brilliant! 무리 감사! – StoryTeller

관련 문제