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

ゆるぼ:C言語でネストした構造体の初期値定義がしたい」記事へのコメント

  • ネストに対応していないというより、グローバル変数や static な変数の初期化に、(例え static constでも)変数が使えない感じですかね。

    初期化関数をヘッダに持つ方法で、static inline としておくと、私の環境では、gccで警告はでないです(理由は知らない)。
    ちなみに、初期化関数って、こういうのでいいですか?
    static inline EtSnapContext EtSnapContextDefault(void){
        return (EtSnapContext){.is_snap_for_grid=1};
    }

    自分なら malloc して使う前提の構造体なら、ヘッダに et_snap_context*et_snap_context_new(void);とか宣言して、.cにメモリ確

    --
    svn-init() {
      svnadmin create .svnrepo
      svn checkout file://$PWD/.svnrepo .
    }
    • > static inline
      inlineにそんな効果があるということなのでしょうか。少し謎ですね。

      > mallocして使うなら
      メモリ確保して使う構造体の場合は、私も確保&初期化関数を書いています。
      ただ、すべてをそうしてしまうと、開放の管理が大変なので、中規模なデータ等、可能であれば関数ローカル変数として作ったり、値渡しを利用することが多いです。

      > 初期値の一覧性
      せいぜい一箇所でしか初期化しない、そこに初期値を書けばいい、という場合はけっこう多いといえば多いのですが、そうでない場合もあったりするのです。
      例えば、SVGオブジェクトの初期色は、SVGパーサ中にまあまあ出て来るようです。色情報の構造体は、真面目にやるとRGBだけの単純構造では不十分で、構造体入りの構造体が欲しくなります。

      親コメント

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

処理中...