我有一個a.h文件,我已經聲明瞭很多結構。我在a.c文件中初始化這些結構(我已經包含了a.h文件),我想在另一個b.c文件中重用相同的a.h文件。當我在b.c中包含頭文件a.h時,我得到了多重定義的錯誤。請幫助我可以做些什麼來防止此問題並在兩個.c文件中重複使用相同的.h文件。.o文件中的多重定義錯誤
0
A
回答
0
http://en.wikipedia.org/wiki/Include_guard
你需要不包括它的兩倍,即包裹.h文件中的
#ifndef _MY_H_
#define _MY_H_
/* codez go here */
#endif _MY_H_
4
相當於你千萬實例化的東西在頭文件中,即從來沒有定義什麼,只是宣佈他們。
,你應該把每一個宣佈的事情一個定義在C文件一個,並在共享的頭extern
聲明:
在mydata.h
:
struct Foo {
float baryness;
float baziness;
};
extern struct Foo TheFoo;
在一個 C文件:
#include "mydata.h"
struct Foo TheFoo;
在其他頭項目:
#include "mydata.h"
printf("the baziness is %f right now\n", TheFoo.baziness);
3
的a.h
只能申報結構—不變量。或者,如果它聲明瞭變量,則應聲明它們爲extern
以防止重複的定義。 (然後在.c文件中的一箇中定義它們)
錯誤是由同一變量的多個定義引起的。確保a.c
和b.c
不能同時聲明相同的變量名稱。
0
你的頭文件應該是這樣,即使您在任意數量的.c文件這個文件中聲明,這樣的..
#ifndef MYHEADER_H
#define MYHEADER_H
struct MyStruct {
...
...
};
#endif // MYHEADER_H
,結構,它將只能定義一次。
相關問題
- 1. .h文件中的重定義錯誤
- 2. 「的......多重定義」錯誤
- 3. C++多重定義錯誤
- 4. C多重定義錯誤
- 5. 多重定義錯誤
- 6. 錯誤:多重定義
- 7. C++中的多重定義錯誤
- 8. Dev-C++中的多重定義錯誤
- 9. 頭文件重定義錯誤 - cpp
- 10. 文件I/O中的分段錯誤
- 11. C++文件I/O錯誤?
- 12. 奇怪的多重定義錯誤
- 13. 「多重定義」的錯誤報告
- 14. 奇怪的多重定義錯誤
- 15. 很多C錯誤,「重新定義」錯誤和更多
- 16. 矢量多重定義鏈接錯誤
- 17. boost測試庫:多重定義錯誤
- 18. 編譯時錯誤:多重定義「主」
- 19. 文件自定義錯誤
- 20. Angular2定義文件錯誤
- 21. 在Wordpress的htaccess文件中定義自定義錯誤文檔
- 22. Java文件I/O -ftp忙中出錯讀取文件錯誤
- 23. WinSock2.h中的重定義錯誤
- 24. GCC - 多重定義錯誤定義模板時(VC++罰款)
- 25. 從自定義錯誤重定向中排除特定錯誤
- 26. 錯誤執行文件I/O
- 27. 重複定義__module_registered錯誤
- 28. Winsock重新定義錯誤
- 29. TIMESPEC重新定義錯誤
- 30. 錯誤:類重新定義