タグ

コンパイルに関するchagoのブックマーク (3)

  • Cプログラミング専門課程/第4章メモリ/静的記憶領域

    『Cプログラミング専門課程』目次/ 第4章メモリ 4.5 静的記憶領域 (1) プログラム実行中は、色々なものがメモリ上に存在します。プログラムが起 動し、終了するまでメモリ上の一定の位置に存在し続けるものに、プログラム とデータの一部があり、データの方だけを指して「静的記憶領域」と呼びます。 静的記憶領域というのは非常に理解しやすいものです。 次のプログラムで実際に変数のアドレスをプリントしてみましょう。各変数 のアドレスが状況によってどう変化するか比べてください。 1: /* static.c -- 静的記憶領域/変数のアドレス */ 2: 3: #include 4: 5: int glob; 6: static int stat; 7: 8: void printvaraddr( void ) 9: { 10: printf( "グローバルな変数 [A] %p\n", &glob

  • ヘッダーファイルは慎重に扱わないと危険です

    ホーム < ゲームつくろー! < C++踏み込み編 < ヘッダーファイルは慎重に扱わないと危険です その7 ヘッダーファイルは慎重に扱わないと危険です ヘッダーファイルは関数やクラスのプロトタイプを宣言するファイルです。今更なんだと思われるかもしれません。しかし、ヘッダーファイルは慎重に扱わないと取り返しのつかないバグを生んでしまいます。それこそシステムが崩壊するほどのバグになることも時にはあります。 ヘッダーファイル軽んずべからず。この章はそういったヘッダーファイルにまつわるお話です。 ① ヘッダーファイルって何なのか? 冒頭でも述べましたように、ヘッダーファイルは関数やクラスのプロトタイプ宣言をするファイルです。プロトタイプ宣言とは、「変数の名前、型」そして「関数名、引数の型、戻り値の型」のみを記述する事を指します。クラスの場合、クラス名と共にクラスが持つメンバ変数やメンバ関数がプロト

  • 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 の日記
  • 1