2012-10-04 28 views
0

我不知道這一點......C結構得到雙重地包括

我有object.h它看起來像這樣

struct basicObject { 
     int x, y; 
} 

void objectSet (int x, int y); 

現在我需要在我的主文件object.h但我還需要在名爲不同的文件的對象集功能和結構svg.c

svg.h看起來像

#define OUTPUT_FILE "output.svg" 
#include "object.h" 

void saveSVG (basicObject item); 

但我的主文件還包含svg.h!所以我得到了struct basicObject的'重定義錯誤'。這顯然有object.h包含兩次。我怎樣才能解決這個問題?

+0

如果」不是編譯爲C++或編輯了一個typedef,在'saveSVG'中,你需要'struct basicObject'。 –

回答

4

如果您計劃使用#include多次引用同一個頭文件,但您只需要第一次包含該頭文件,則應該使用include guards

2

有兩個主要選項。在你的頭文件,做

#pragma once 

或包住整個頭文件中:

#ifndef MY_SVG_H 
#define MY_SVG_H 

... your code ... 

#endif 

延伸閱讀:

+2

(做然而要注意'的#pragma once'是非標準) – rid

+0

建議你做兩個, 的#pragma一次 的#ifndef .. 的#define .. =>您與編譯保持快速編譯的優勢一次,但與define的可移植性。 – Erowlin