У меня определена константа:
#define MAX_STR_LEN 100
Я пытаюсь сделать это:
scanf("%" MAX_STR_LEN "s", p_buf);
Но, конечно, это не работает.
Какой трюк препроцессора можно использовать для преобразования числа MAX_STR_LEN в строку, чтобы я мог использовать его в приведенном выше вызове scanf? В основном:
scanf("%" XYZ(MAX_STR_LEN) "s", p_buf);
Каким должен быть XYZ()?
Примечание. Я, конечно, могу сделать «% 100s» напрямую, но это противоречит цели. Я также могу сделать #define MAX_STR_LEN_STR "100", но я надеюсь на более элегантное решение.
#define f(x) #x
будет препроцессироватьf(foo)
в"foo"
- person Andrew Tomazos   schedule 29.09.2012