Re: [問題] multiple definition in gcc?

看板Programming作者時間18年前 (2007/07/08 20:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
.h檔中, 不應該宣告變數的實體... 如果要所有檔案接共用某變數 則在B.h中用 extern int m; 而在B.cpp中, 實作變數m的實體, 也就是 int m; (或者是 int m = 4;) 連結時, 把B.obj一起連結就可以了... (或者是把B.cpp加入方案也一樣) ※ 引述《rattler.bbs@bbs.ntu.edu.tw (好人可以裝酷嗎)》之銘言: : 貼個很簡單的例子來說明multiple definition的問題.. : 有三個檔案b.c, b.h 和 main.c, 執行gcc b.c main.c之後,產生如下的錯誤訊息 : /tmp/ccWtXLur.o(.data+0x0): multiple definition of `m' : /tmp/ccwfCTTj.o(.data+0x0): first defined here : 我以為說, 用#ifndef __B_H__等行, 可以確保b.h只會被include一次, : 但是似乎在main.c 以及b.c中的include "b.h", 皆執行了#include "b.h"此行, : 因而造成multiple definition的問題. : 不知道問題是在哪呢? 該如何做呢? : 謝謝 : ================================== : b.h: : #ifndef __B_H__ : #define __B_H__ : int m = 4; : #endif : ---------------------- : b.c: : #include "b.h" : ---------------------- : main.c: : #include "b.h" : int main() { : return 0; : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.224.244
文章代碼(AID): #16aDjnWe (Programming)
文章代碼(AID): #16aDjnWe (Programming)