2010-09-30 42 views
1

說定義在C++中的頭文件中的結構,foo.h中在C++和c中共享一個結構?

typedef struct { 
    ... 
}foo; 
在.c文件

我包括了foo.h,然後

foo* fooPtr; 

將它的工作?

+0

也許吧。什麼是結構? – 2010-09-30 23:06:40

+0

當您嘗試此操作時發生了什麼?你有沒有得到任何錯誤? – 2010-09-30 23:07:51

+0

也許,它是否適合你? – 2010-09-30 23:09:59

回答

1

這很大程度上取決於結構foo中的實際內容。如果結構僅僅是數據,並且本身或其任何成員字段中沒有行爲,那麼應該在C或C++中工作得很好。如果有任何形式的明示或暗示的行爲(認爲產生的析構函數),則沒有也不會在正確C.

工作例如:

// Works fine in C or C++ irrespective of where it was defined 
typedef struct { 
    int field1; 
} foo; 

// Will have different behavior if it compiles at all. 
struct bar { 
    ~bar() { 
    // destructor code 
    } 
}; 

typedef struct { 
    bar b; 
} foo; 
0

的C++ struct聲明符合C語言只要它沒有任何C++功能;一個簡單的C語言聲明。例如,沒有private聲明。