2013-01-23 Wed
■ enum の不思議な動き [langc]
開発中のソースコードを見ていて、enum の設定ミスを発見。
しかし、make も動作も問題ない。
で、ちょっと enum お試し。
#include <stdio.h> enum Color { white, black, red }; enum Name { koba }; // sub() 引数は enum Name int sub(enum Name nam) { switch(nam) { case white: printf("White\n"); break; case black: printf("Black\n"); break; case red: printf("Red\n"); break; default: printf("Other\n"); } return 0; } int main() { enum Color col; col = red; // sub() に enum Color の red を設定 sub(col); return 0; }
- まず enum Color と enum Name の二つを定義
- で、sub() 関数の引数に enum Name nam を定義したが、
処理では間違えて、nam を enum Color の要素のように分岐
- 更に、main() でsub() を呼ぶときに、間違えて enum Color の red を設定
- ここに、enum Name は要素数 1なのに、red は enum Color の3番目
にも関わらず、gcc -W -Wall でも何のエラー、ワーニングもなくコンパイルリンク OK
かつ、実行すると "Red" が表示される。
enum Name って何なの?? という結果でした。
最終更新時間: 2024-11-21 17:03