タグ

staticに関するyowanoのブックマーク (7)

  • C言語の正しいヘッダファイルの書き方 - saito’s blog

    最近、仕事でC言語での組み込み系の開発に携わっています。 開発中のコードを眺めていると、ヘッダファイル内にstatic関数のプロトタイプ宣言を記述していたり、ヘッダファイル内で不必要に他のヘッダファイルをインクルードしているなど、ヘッダファイルの書き方が分かっていないと思われる箇所が多々見られました。 実際、C言語の入門書でもヘッダファイルの書き方を詳しく説明しているものは、僕の知っている限りでは存在しないので、C言語を使っていてもヘッダファイルの正しい書き方を知らない人が少なくないのではないかと思われます。 そこで、このエントリでは、C言語のヘッダファイルの書き方について、僕が知っているテクニックをまとめてみました。 インクルードガードを書く ヘッダファイルファイルで他のヘッダファイルをインクルードしていると、いつの間にか同じヘッダファイルを2回インクルードしてしまうことがあります。 例

    C言語の正しいヘッダファイルの書き方 - saito’s blog
    yowano
    yowano 2013/09/10
    『staticグローバル変数をヘッダファイルに記述してしまうと、そのヘッダをインクルードしたソースごとに別々の変数の実体が作成されてしまう』など、駄目な理由を示しつつ、ヘッダの正しい書き方の解説。
  • 新米さん@ゲームプログラミング - global変数とstatic変数の違い

    「global変数とstatic変数の違いがよくわからない」という人の大半は、 教科書を読んで、global変数も、static変数も、「値が保持されるんだな」というイメージを持ってしまっている点にあると思われる。 たとえば、global変数は、local変数と異なり、スコープ外へ出ても値が保持される。 来は、global変数は「どこから全てのスコープからアクセスできる変数」のことなのだが、local変数がスコープの外へ出ると値が無くなるという風に説明されるため、 対比として「スコープの外へ出ても値が保持されるんだな」と来の概念とは異なった意味で理解してしまう。 次に、staticローカル変数だが、 そもそも、static変数の元々の意味は、呼び出しの度に初期化されない変数のこと。すなわちglobalではなくて、自動変数(auto変数)と対比される。 static変数もまた、スコープを

    yowano
    yowano 2013/09/09
    ローカル変数、staticローカル変数、グローバル変数、staticグローバル変数のそれぞれの特性のまとめ。
  • シーンの遷移(Stateパターン) - ゲームプログラムめも日記

    はじめに ゲームには、 タイトル モードセレクト メインゲーム 結果 などのシーンがあります。 それらのシーンの遷移をオブジェクト指向で実現する方法を解説します。 シーンクラス まず基底となるISceneクラスを定義します。 /** * シーン基底クラス。 * コイツをインプリするのだ! */ class IScene { public: IScene(); virtual ~IScene(); virtual void Render() = 0; // シーンの描画 };virtual void Render() = 0; っていうのが、仮想関数の宣言で、 この宣言によりISceneは仮想クラスになります。 そしてこれを継承して、各シーンクラスを実装します。 /** * タイトルシーン(タイトル画面) */ class CSceneTitle : IScene { public: CSc

    シーンの遷移(Stateパターン) - ゲームプログラムめも日記
    yowano
    yowano 2013/06/04
    逐次シーンの生成・破棄を行わない形のシーン遷移。staticをふんだんに使っている。RPGで利用できそうな、スタックによるシーン管理についても記述。前シーンの情報を取得する構造にマッチ。コメントでの議論も要注目。
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    yowano
    yowano 2013/04/22
    静的メンバ変数はスコープを限定されたグローバル変数のようなイメージであり、宣言した場合、その実体の定義をクラス定義の外側に記述する。静的メンバ関数からは、静的でないメンバ変数・関数を呼び出せない。
  • c++静的クラスについて。 - staticclassclassname{inta;voidfunc();.....};等と宣言すれば... - Yahoo!知恵袋

    c++ 静的クラスについて。 static class classname { int a; void func(); ..... }; 等と宣言すれば、classnameクラスのメンバは変数も関数もすべてstaticの属性を帯びると思っていたのですが、通常のクラス内でstatic変数を宣言した時のように、クラス外で再宣言する必要がないのはなぜですか? そういうもんだからなのか、それとも実はstatic class内のメンバすべてがstaticであるということが思い違いなのか。。。 ご回答よろしくお願い致しますm(_ _)m k032yfさん 確かにそうなんですが... 「static class内の関数にスコープ解決演算子をあてたclassname::func() = グローバル関数func()」という認識で用いると、「静的でないメンバ参照は特定オブジェクトを基準にした相対参照で」という

    c++静的クラスについて。 - staticclassclassname{inta;voidfunc();.....};等と宣言すれば... - Yahoo!知恵袋
    yowano
    yowano 2013/04/22
    C++には、C#に存在する『静的クラス』という概念が(標準のC++処理系には)存在しないらしい。この話とは無関係で全く余談ではあるが、静的オブジェクトは存在する。
  • 静的メンバー

    概要 静的メンバー(static member)とは、 特定のインスタンスにではなく、クラスに属するフィールドやメソッドのことです。 そのため、静的変数のとこをクラス メンバーとも呼びます。 (クラス変数という呼び名の方が意味合い的には正しいのですが、 C言語から派生したというC#の歴史的な背景のため、静的変数という呼び方をします。) 「静的」という言葉は、各種メンバー(フィールド、メソッド、プロパティなど)それぞれに対して、静的フィールド、静的メソッド、静的プロパティ、… などという使い方もします。 また、静的メンバーとの区別を明確にしたい場合には、通常のメンバー変数のことをインスタンス メンバーと呼びます。 ポイント 静的メンバー: この呼び方は歴史的なもので、実際にはクラス メンバー(クラス メソッド、クラス フィールド)と呼ぶ方がいいかも。 static キーワードをつけると静的メ

    静的メンバー
    yowano
    yowano 2013/04/21
    静的変数・静的メソッドは、数学関数などの、インスタンスを持つ必要のない関数を定義する場合にも使います。静的なメンバーしか持たない静的クラスもある。静的メンバの初期化などは静的コンストラクタでやる。
  • staticメソッドにするかどうかの判断 - BIGLOBEなんでも相談室

    yowano
    yowano 2013/04/21
    プログラム実行時、Java仮想マシンは、まずクラスをメモリにロードし、「クラスというオブジェクト」を作る。そして、その内容をコピーして「インスタンスというオブジェクト」を作る。どちらもオブジェクトだ。
  • 1