相关疑难解决方法(0)

C预处理器,对宏的结果进行字符串化

我想将宏扩展的结果字符串化.

我试过以下内容:

#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)

stringification c-preprocessor

41
推荐指数
2
解决办法
2万
查看次数

如何在格式字符串中使用define?

说我有一个字符数组:

#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?

c format-specifiers c-preprocessor

12
推荐指数
1
解决办法
3001
查看次数