Closed. This question needs details or clarity. It is not currently accepting answers. Learn more
想改进这个问题吗?添加细节并通过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