2012-04-18 2 views
10

문자열을 문자열로 변환하지 않고 "text"text으로 변환해야하는 매크로 인수를 원한다고 가정합니다.C 매크로에서 따옴표를 제거 할 수있는 방법이 있습니까?

#define UN_STRINGIFY(x) /* some macro magic here */ 

이제이 매크로 문자열 화 (stringification)의 반대 것이 매크로는 인수

UN_STRINGIFY("text") // results in ----> text 

에서 ""을 제거합니다 전화 :

#define STRINGIFY(x) #x 

하면이 가능한가, 아니면 매크로와 함께 연주하고 악의?

+0

가능한 경우 수행하고 싶은 작업은 무엇입니까? – iammilind

+3

그건 불가능합니다. 호기심에서 의도 한 용도는 무엇입니까? – dasblinkenlight

+0

음, 일반적으로 stringify를 사용 하겠지만 일부 매크로를 리팩터링하고 실제로 호출 패턴을 변경하고 싶지는 않습니다. '#define THIS_MACRO (stringParam) const char * un ## stringParam = stringParam;'으로 변경 될 것입니다. – syvex

답변

15

불가능합니다. 그리고 그것은 아마도 좋은 것입니다 : 당신이 문자열을 전달한다면 당신은 거의 모든 것을 그 안에 넣을 수 있다고 가정합니다. un-stringifying하면 컴파일러는 실제로 해당 문자열의 내용을 돌보게됩니다.

관련 문제