我有一個包含警衛設置的頭文件。我的項目中有多個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:所以文件範圍是單個下劃線。 – Olaf