最新ページ

langc - XINUJP - ChangeWebLog

最終更新時間: 2023-01-16 17:42

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 って何なの?? という結果でした。

2012-07-03 Tue

libxml2, curl のライセンス [langc][unix]

最近、オープンソースを使った仕事が多い。
で OSS 使うのは嬉しいが、それで製品開発するのでライセンスがかなり気になる。
とりあえず, 使用することが決まっている OSS の libxml2, curl のライセンスを調べたところ、いずれも MIT ライセンス(系)だった。
まずは一安心。GPL なんぞだったらと思うとゾッとする。

次の(製品)サーバ構築は Linux やめて、FreeBSD にしようと思う今日このごろ。
clang も使えるようになって来たらしいしな。