我遇到了一個問題 - 我需要使用宏值作爲字符串和整數。宏值的字符串化
#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 2010-04-16 13:29:14
Linux內核示例:http://lxr.free-electrons.com/source/include/linux/stringify.h?v=4.7 – 2016-11-03 17:10:51