タグ

ifndefに関するyukimori_726のブックマーク (3)

  • インクルードガード | 闇夜のC++

    c++の#include ディレクティブは、プリプロセスで解釈され、書かれたファイル名の内容を単にその場所に展開したものとして処理されます。

  • ifndef

    円周率のような定数は広く使われるので、ヘッダファイルに含めたいところです。そのヘッダファイルをインクルードするだけでPIを定義できます。 ところが、1つのプログラムで、2回以上同じ宣言をしてはいけません。すると、そのヘッダファイルは1つのプログラムで1回しかインクルードできません。 補足 一般に1つのプログラムは、複数のファイル(*.cppファイル、*.hファイル)で構成されます。あるcppファイルが、ある定義を持つヘッダファイルをインクルードし、別のcppファイルが同じヘッダファイルをインクルードすると、同じ宣言を2回していることになってしまいます。 そこで、#ifndefと#endifを使います。これらは、擬似命令と呼ばれるプリプロセッサによって処理される命令です。プリプロセッサとはコンパイルの前に実行されるコマンドのことです。プリプロセッサの実行は自動的に行われるので、通常、プログラ

  • インクルードガード

    [ C++で開発 ] インクルードガード 少し込み入ったプログラムを開発していると、ヘッダファイルを2重にincludeしてしまい、コンパイルエラーとなることがあります。ここでは、その回避方法として使われる内部インクルードガードと、include処理時間を大幅に削減しコンパイル時間を短くする冗長インクルードガードの2つを取り上げます。 (追加)最近のGCCでは#pragma onceも無警告で使用できるようになっているようです。 インクルードガードの必要性 2重インクルードの発生 まず、2重インクルードが発生する例を見てみます。

  • 1