Bir sorunla karşılaştım - Hem dize hem de tam sayı olarak bir makro değeri kullanmam gerekiyor.Makro değerinin tanımlanması
#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... */
Bu "başıboş #" bir mesajla başarısız ve işe yaradı bile, ben makro isimleri, değerleri değil dizgelenmiş yerdik. Tabii ki değerleri son yöntemle ("LIMIT %d ", page*RECORDS_PER_PAGE
) besleyebilirim ama ne güzel ne de verimli. Önişlemcinin dizeleri özel bir şekilde işlemesini ve içeriğinin normal kod gibi işlenmesini istediğim zamanlar böyle oluyor. Şimdilik, #define RECORDS_PER_PAGE_TXT "10"
ile kundaklamadım ama anlaşılabilir bir şekilde, bundan memnun değilim.
Nasıl edinilir?
Gcc'de benim için önceden doğru şekilde işlendi. – kennytm
Linux çekirdeği ile ilgili örnek: http://lxr.free-electrons.com/source/include/linux/stringify.h?v=4.7 –