Closed. This question needs details or clarity. It is not currently accepting answers. Learn more。
想改进这个问题吗?添加细节并通过editing this post澄清问题。
三年前关闭。
如何将类似“EINVAL”的字符串转换为EINVAL?
我要把很多宏字符串转换成它们的值,有什么办法?
任何预处理器技巧都不能将字符串文本转换为相应的符号。
但是您可以使用预处理器来简化这样的测试序列:
通常,小心预处理器。。。
想改进这个问题吗?添加细节并通过editing this post澄清问题。
三年前关闭。
如何将类似“EINVAL”的字符串转换为EINVAL?
我要把很多宏字符串转换成它们的值,有什么办法?
最佳答案
下面是我能想到的最简单的方法:
#include <errno.h>
if (!strcmp(str, "EINVAL"))
value = EINVAL;
任何预处理器技巧都不能将字符串文本转换为相应的符号。
但是您可以使用预处理器来简化这样的测试序列:
value = 0;
#define conv(s) do { if (!strcmp(str, #s)) value = s; } while (0)
conv(EINVAL);
conv(ENOMEM);
conv(ERANGE);
conv(EINTR);
#undef conv
通常,小心预处理器。。。
关于c - 将宏字符串转换为宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34181907/
10-11 23:16