2016-11-21 6 views
0

다른 곳에서 변경된 덕분에 "Foo"대신 (("Foo")와 같이 표시되는 일부 C 전 처리기 매크로로 작업하고 있습니다. 문제는 코드의 다른 곳에서 연결을 깨는 것입니다.C 전처리 기, 스트링 문자열 괄호

E.G.

#include "some_external_FOO_and_FILE_PATH_declarations.h" 
//FOO is (("Foo")) 
const char* filepath = FILE_PATH(FOO "/bar") 
//throws error 

어떻게하면 FOO를 "Foo"처럼 보이게 할 수 있습니까?

#define UNPAREN(...) #__VA_ARGS__ 
const char *filepath = FILEPATH(UNPAREN(FOO) "bar") 

답변

0

나를 위해 일하게했다. 아마 당신이 원하는 것이 아닙니다. #define UNPAREN (...) __VA_ARGS__ (#이 부족함) "bar"가 생성되지만 트릭이 있습니다. 당신은 그것을 UNPAREN FOO UNPAREN (FOO) 대신에 괄호가 이미 있기 때문에 호출해야합니다. 중첩 된 괄호에는이 기능이 잘 작동하지 않습니다.
+0

업데이트 : :의 말을하자 #DEFINE의 FOO ("바") 그리고이 같은 생산합니다 "FOO"을 – Hatsuma