タグ

2013年4月22日のブックマーク (5件)

  • gccで#pragma onceを使う さらばインクルードガード - td2sk の日記

    今までMS系コンパイラだけの機能だと誤解してた。 gcc(version 3.4以上)でも#pragma onceが使える。だからいちいちインクルードガードを書く必要はない。 pragma once:Wikipedia ただし、 C/C++標準で定められていない独自拡張であり、移植性は期待できない #pragma hogehoge は、hogehogeにtypoがあってもwarningすら出ずに無視される シンボリックリンクがあると正しく動作しないコンパイラがある(gcc3.4など) 移植性に関しては、wikipediaによれば多くのコンパイラでサポートされているようなのでさほど問題にはならないかもしれない。 しかし2番目、onceでのtypoはやばい。そのときは何の問題もなくコンパイルが通っても、ある日突然2重インクルードによるエラーが発生して混乱の元。用いる際は十分注意すること 裏技と

    gccで#pragma onceを使う さらばインクルードガード - td2sk の日記
  • サービス終了のお知らせ

    サービス終了のお知らせ いつも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++処理系には)存在しないらしい。この話とは無関係で全く余談ではあるが、静的オブジェクトは存在する。
  • サービス終了のお知らせ

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

    yowano
    yowano 2013/04/22
    名前空間は1つのスコープ。名前空間を使うことにより、異なるソースで同じ変数名や関数名が衝突することを避けられる。また、グローバル変数などは、暗黙的に、無名名前空間であるグローバル名前空間に含まれている
  • C++構造体

    構造体って? C 言語で、いくつかの変数をひとまとまりにしたものを構造体といいます。例えば、下のように struct を使って定義します。 typedef struct Item { int code; /* 商品コード */ int name; /* 商品名 */ int price; /* 価格 */ } ITEM, *LPITEM ; 商品コードと商品名と価格を管理する場合、code, name, price の変数をそれそれ作るよりも商品( Item) でひとまとめすることでプログラムがわかりやすくなります。こういったまとまったデータをレコードともいいます。プログラムが小さいと大げさなように感じされますが、複雑になるにまし、struct のありがたみがわかります。 では C++ の構造体はというと、同じように使えます。C++ はCのソースコードをそのままコンパイルできるようになって

    yowano
    yowano 2013/04/22
    C++における構造体とクラスは同一のもの。class キーワードを struct キーワードに置き換えている。構造体として宣言しても、メンバ関数を持つことはもちろん、継承すらもできる。ただしデフォルトのアクセス修飾子が違う