作者WPC001 ()
站内Programming
标题Re: [问题] multiple definition in gcc?
时间Sun Jul 8 20:41:20 2007
.h档中, 不应该宣告变数的实体...
如果要所有档案接共用某变数
则在B.h中用 extern int m;
而在B.cpp中, 实作变数m的实体, 也就是 int m; (或者是 int m = 4;)
连结时, 把B.obj一起连结就可以了... (或者是把B.cpp加入方案也一样)
※ 引述《[email protected] (好人可以装酷吗)》之铭言:
: 贴个很简单的例子来说明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