我想将宏扩展的结果字符串化.
我试过以下内容:
#define QUOTE(str) #str
#define TEST thisisatest
#define TESTE QUOTE(TEST)
Run Code Online (Sandbox Code Playgroud)
并且TESTE扩展到:"TEST",而我正试图获得"thisisatest".我知道这是预处理器的正确行为,但任何人都可以帮我找到另一种方法吗?
Using TESTE #TEST is not valid
Using TESTE QUOTE(thisisatest) is not what I'm trying to do
Run Code Online (Sandbox Code Playgroud) 说我有一个字符数组:
#define LEN 10
char arr[LEN + 1];
Run Code Online (Sandbox Code Playgroud)
让我们做一些scanf操作:
scanf("Name: %s", arr);
Run Code Online (Sandbox Code Playgroud)
如果有人输入的名称超过10个字符,这可能会很危险.所以最好用这个:
scanf("Name: %10s", arr);
Run Code Online (Sandbox Code Playgroud)
那么现在如果LEN改变我会遇到麻烦.我将不得不通过整个代码来纠正我10在上下文中使用的每一行arr.所以我想到了这样的事:
scanf("Name: %LENs", arr);
Run Code Online (Sandbox Code Playgroud)
但这不起作用.LEN由于在字符串中使用,因此预处理器无法解析.
如何在格式字符串中使用define?