반응형
따옴표로 묶은 문자열 내 매크로 확장
중복 가능성:
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
반응형
'programing' 카테고리의 다른 글
유연한 항목이 콘텐츠 크기를 넘어서 축소되지 않는 이유는 무엇입니까? (0) | 2023.08.04 |
---|---|
'경로'의 가져오기 경로를 사용하여 노드의 경로 모듈을 가져올 수 있습니까? (0) | 2023.08.04 |
URL에 쉼표를 사용할 수 있습니까? (0) | 2023.08.04 |
NIB 파일의 개체를 앞/뒤로 보내는 방법은 무엇입니까? (0) | 2023.08.04 |
데이터 정렬 충돌을 해결할 수 없음 (0) | 2023.08.04 |