例如,這裏是一個ç共同#define
:的#define串數字定義
#define USERNAME_LEN 100
#define SCAN_FMT "%100s"
// str is input from somewhere
char username[USERNAME_LEN + 1];
ret = sscanf(str, SCAN_FMT, username);
// check ret == 1 ?
我們可以有這樣的:
#define SCAN_FMT "%" USERNAME_LEN "s"
當然
,這種語法不是我們想要,但最終目標 是混合數字#define成字符串#define
注:我知道我們可以做一些事情荷蘭國際集團這樣的:
sprintf(SCAN_FMT, "%%ds", USERNAME_LEN); // char SCAN_FMT[10];
但這不是我所期待的,因爲它需要運行時生成, 最好是立足於ANSI-C或std99。
這個答案可以幫助你:http://stackoverflow.com/a/20642870/694576 – alk