3

重複の可能性:
C で列挙型の変数を文字列として使用する簡単な方法は?
これはprintfをカスタマイズすることは可能ですか?

より便利な方法で独自に定義された typedef を印刷することは可能ですか? 次に例を示します。

typedef enum {
    On,
    Off,
    Unknown
} State;

State st;

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

「State is:On | Off | Unknown」と表示させたい

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


}

enumタグを指定すると、整数値を割り当てることができます。

「ABCD」のようなものは、32 ビット値になる複数文字の定数です。各バイトは、対応する文字の ASCII 値です。

上記の例では、整数ではなく文字列として扱われる複数文字の定数を各タグに割り当て、結果として 3 文字のタグが生成されます。

それはかなり醜いです。私は認めます。3 文字のタグが強制され、それらを逆に記述する必要があります (Mac OS X - Intel の場合と同様)。

しかし、動作します。

于 2013-01-30T20:50:53.553 に答える