[問題] multiple definition in gcc?
貼個很簡單的例子來說明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;
}
--
☆ [Origin:椰林風情] [From: 59-124-164-52.hinet-ip.hine] [Login: **] [Post: 10]
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章