パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Cに欲しい機能 インデックス番号付き構造体配列」記事へのコメント

  • enumは0から順番に割り振られることが保証されてるので、そのまま配列indexに使えると思いますが…

    // indexをIDとして定義
    enum{
      ColorId_Info,
      ColorId_Warn,
      ColorId_Error,
    }ColorId;
     
    // 引きたい内容の構造体
    typedef struct{
      int r, g, b,
      const char *name,
    }ColorInfo;
     
    // 引きたい内容の実態
    static const ColorInfo = colorInfos[] = {
      {0, 32, 64, "Info"},
      {0, 64, 128, "Warn"},
      {0, 128, 255, "Error"},
    };
     
    // 以下、引く機能は概念コード
    size_t getNumColorInfos(){ return sizeof

    • by Anonymous Coward

      > > enum{
      > > ColorId_Info=0,
      > > ColorId_Warn=1,
      > > ColorId_Error=2,
      > > }ColorId;
      > と、明示的に割り当てた方が、対応がわかりやすいですかね。

      構造体配列の方が連番になっていることが前提なので、明示的に割り当てると逆にトラブルの元じゃないですかね。
      うっかり数字を抜かしたり入れ替えてしまったりした場合に分かりにくい。

      これに加えてさらに、C99で導入された配列初期化の拡張を使うと良いと思います。

      // 引きたい内容の実態
      static const ColorInfo colorInfos[] = {
          [ColorId_Info] = {0, 32, 64, "In

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

処理中...