문제가 생겼습니다 - 매크로 값을 문자열과 정수로 사용해야합니다.매크로 값의 문자열 화
#define RECORDS_PER_PAGE 10
/*... */
#define REQUEST_RECORDS \
"SELECT Fields FROM Table WHERE Conditions" \
" OFFSET %d * " #RECORDS_PER_PAGE \
" LIMIT " #RECORDS_PER_PAGE ";"
char result_buffer[RECORDS_PER_PAGE][MAX_RECORD_LEN];
/* ...and some more uses of RECORDS_PER_PAGE, elsewhere... */
이 "길 잃은 #"에 대한 메시지와 함께 실패하고 일을해도, 내가 매크로 이름, 값을되지도 캐릭터 라인 얻을 것 같아요. 물론 최종 메서드 ("LIMIT %d ", page*RECORDS_PER_PAGE
)에 값을 공급할 수 있지만 그다지 효율적이지 않습니다. 전 처리기가 특별한 방법으로 문자열을 처리하지 않고 일반 코드처럼 내용을 처리하기를 바랄 때가 왔습니다. 지금은 #define RECORDS_PER_PAGE_TXT "10"
으로 축약되었지만 분명히 그것에 대해 만족스럽지 않습니다.
권리를 얻는 방법?
나를 위해 gcc에서 올바르게 사전 처리되었습니다. – kennytm
Linux 커널 예제 : http://lxr.free-electrons.com/source/include/linux/stringify.h?v=4.7 –