3

可能重复:
在 C 中使用枚举类型的变量作为字符串的简单方法?
这可以自定义printf吗?

是否可以以更方便的方式打印自己定义的 typedef?这是示例:

typedef enum {
    On,
    Off,
    Unknown
} State;

State st;

st=getState();
printf("State is:%??",st);

我想显示“状态为:开 | 关 | 未知”

4

1 回答 1

0

不,但你可以做一个技巧:

typedef enum {
    On = '\000 nO',
    Off = '\000ffO',
    Unknow = '\000knU'
} State;

int main(int argc, const char * argv[])
{
    State st;

    st = On;

    printf("state is %s",(char *)&st);


}

当您指定枚举标签时,您可以分配一个整数值。

像“ABCD”这样的东西是一个多字符常量,产生一个 32 位的值。每个字节都是对应字符的 ASCII 值。

在上面的示例中,我为每个标记分配了一个多字符常量,将其视为字符串而不是整数,从而生成一个 3 个字符的标记。

比较难看。我承认。您被迫使用 3 个字符标签,并且必须将它们颠倒过来(如在 Mac OS X - Intel 上)。

但有效。

于 2013-01-30T20:50:53.553 回答