一个字符串如何" EINVAL"被转换成EINVAL?
我必须将很多宏字符串转换为它们的值,可以做什么?
答案 0 :(得分:3)
这是我能想到的最简单的方法:
#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
通常,请小心预处理器......