看板Programming
标 题[问题] multiple definition in gcc?
发信站椰林风情 (Sun Jul 8 17:37:25 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!Palmarama
贴个很简单的例子来说明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]