include-guards

    35

    3答えて

    同じCソースファイルに#ifndef ABCと#if !defined (ABC)があります。 微妙な違いはありますか? (スタイルの問題の場合、誰かが同じファイルでそれらを使用する理由)

    7

    6答えて

    ガードが存在し、私の質問は、異なる種類のものである #pragma onceは標準ではありませんので、すべてのコンパイラでサポートされていないなどということが含まれ、なぜ私が知っている: は今までにそれらを持っていないために何らかの賢明な理由があります?私は理論的に、どこか他の場所にインクルードされることになっているファイルにインクルードガードを提供しないという利点があります。誰かがそれを持たない

    3

    2答えて

    私はこのファイルlogger.hppを持っています。 logger.hppにはevent.hppが含まれ、event.hppにはlogger.hppが含まれています。 logger.hppにoperatorを定義する必要があるため、event.hppを含める必要があります。 イベントevent.hppにクラスイベントで定義される友人関係があるため、logger.hppをインクルードする必要がありま

    1

    1答えて

    これは可能ですか? 基本的に、私がやりたいことは、このようなものです: #includeIfItExists "header.h" とがheader.hが存在しない場合、コンパイラは、単にその陽気な方法で続けています。

    15

    2答えて

    私はこのようなファイルをしばらく作成しています: 注文は意味がありますか?名前空間と#includeがスワップされ、なぜそのようになっているかを確認する必要があります。 #ifndef CLASSNAME_H // header guards #define CLASSNAME_H #include "a.h" // includes in alphabetical order #incl

    4

    3答えて

    複数のファイルに#includeする関数を名前空間に持つのは正しい方法ですか? TEST.H #pragma once #ifndef TEST #define TEST namespace test{ namespace { bool test(){ return true; } } } #endif

    16

    9答えて

    C++にはどのような名前のガードが含まれていますか?私はこれをたくさん見る傾向があります: #ifndef FOO_H #define FOO_H // ... #endif しかし、私はそれは非常に直感的ではないと思います。ファイル名を見ることなく、FOO_Hが何であるか、その名前が何を指しているのかを知ることは困難です。 ベストプラクティスとは何ですか?

    3

    5答えて

    CとC++は宣言と定義を区別します。 シンボルを何度も宣言することはできますが、シンボルを1回だけ定義することはできます。これを学習することで、しばらく定義ガード内部私は、警備員の外宣言を置くためのアイデアを持っている: // declarations int foo(int x, int y); int bar(int x, int y); extern double somethin

    5

    6答えて

    何らかの理由で、ヘッダーガードを使用していても、ヘッダーファイル内に複数の宣言があります。私のコード例は以下の通りです: のmain.c: #include "thing.h" int main(){ printf("%d", increment()); return 0; } thing.c: #include "thing.h" int increment(

    1

    1答えて

    は、このファイルを取りに失敗: a.h #ifndef A_H #define A_H char EL[] = "el"; #endif a.cpp #include "a.h" b.h #ifndef B_H #define B_H #include "a.h" #endif b.cpp #include "b.h" main.cppに #include "b.