Convert a preprocessor token to a string

c, c-preprocessor, stringification

Solution

See Using FILE and LINE to Report Errors:

#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define AT __FILE__ ":" TOSTRING(__LINE__)

So your problem can be solved by doing `sscanf(buf, "%" TOSTRING(MAX_LEN) "s", val);`.

Problem

I'm looking for a way to convert a preprocessor token to a string. Specifically, I've somewhere got: ``` #define MAX_LEN 16 ``` and I want to use it to prevent buffer overrun: ``` char val[MAX_LEN+1]; // room for \0 sscanf(buf, "%"MAX_LEN"s", val); ``` I'm open to other ways to accomplish the same thing, but standard library only.

Original source

Related problems