programing

따옴표로 묶은 문자열 내 매크로 확장

i4 2023. 8. 4. 22:39
반응형

따옴표로 묶은 문자열 내 매크로 확장

중복 가능성:
C 문자열을 만드는 매크로

나는 유형의 하나의 인수를 받아들이는 함수를 가지고 있습니다.char*,맘에 들다f("string");
만약 문자열 인수가 함수 호출에서 즉시 정의된다면, 어떻게 문자열 본문 내에서 매크로를 확장할 수 있습니까?

예:

#define COLOR #00ff00
f("abc COLOR");

와 동등할 것입니다.

f("abc #00ff00");

그러나 대신 확장이 수행되지 않고 함수가 문자 그대로 수신됩니다.abc COLOR.

특히 매크로를 정확하게 확장해야 합니다.\"#00ff00\"따라서 이 인용된 토큰은 전달된 문자열 인수의 나머지와 연결됩니다.f()포함된 인용문. 즉, 전처리기는 그의 일을 끝내고 코드를 변환하는 컴파일러를 환영해야 합니다.f("abc COLOR");로.f("abc \"#00ff00\"");

문자열에서 매크로를 확장할 수는 없지만 쓰기는 가능합니다.

#define COLOR "#00ff00"

f("abc "COLOR);

이 연결은 C 전처리기에 의해 수행되며 변수 등이 아닌 일반 문자열을 연결하는 기능일 뿐입니다.

#define COLOR "#00ff00"
f("abc "COLOR);

언급URL : https://stackoverflow.com/questions/12958925/expand-macros-inside-quoted-string

반응형