インクルードガードの設定をしたヘッダーファイルがあります。私はこのヘッダファイルをコンパイルに必要とする私のプロジェクトに複数のCファイルがあります。しかしコンパイルすると、その関数がすでに別のファイルからインクルードされているというエラーが表示されます。インクルードガードはこれを防ぐべきではありませんか?理論的には、私はこのファイルを何度もインポートしなければならないと信じていますが、この問題はありません。Cインクルードガードの問題
#ifndef __BST_INCLUDED
#define __BST_INCLUDED__
//bunch of code here
#endif
エラー:
bst.h:22:13: error: conflicting types for ‘pruneBSTNode’
extern void pruneBSTNode(bst *tree,bstNode *node);
^
In file included from vbst.h:5:0,
from bstrees.c:7:
おそらく '#pragma once'を使用します –
__BST_INCLUDEDに関しては、二重のアンダースコアを恐れてください! [ダブルアンダースコアはライブラリ実装で使用するために予約されています](http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier)悪いあなたがこれをしていくつかのライブラリ識別子と衝突すると、デバッグが難しくなるかもしれません。 – user4581301
@ user4581301:1つのアンダースコアがファイルスコープにあります。 – Olaf