已经在其他文件中定义, fatal error LNK1169: 找到一个或多个多重定义的符号

定义了一个头文件,包含一个 bool 变量,然后在另一个 类的头文件中包含了此头文件 ,如下所示:
A.h
#ifndef _A_HEADER_
#define _A_HEADER_
bool bGolbal = true;
#endif // _A_HEADER_
============================
B.h
#pragma once
#include "a.h"
class B
{
}
=============
C.cpp
#include "a.h"
#include "b.h"

int main()
{
bGolbal = false;
return 0;
}

得到如上错误,请问如何解决,谢谢!
A.h
#ifndef _A_HEADER_
#define _A_HEADER_
extern bool bGolbal;
#endif // _A_HEADER_

B.cpp
extern bool bool bGolbal;

void set()
{
bGolbal = true;
}

c.cpp

bool bGolbal;

void main()
{
bGolbal = FALSE;
class B b;
b.set(bGolbal);

if(b)
{
printf("1111\n");
}
else
{
printf("00000000000\n");
}
}

头文件不得包含变量定义和函数体,否则被包含一次,这些变量、函数就被重新定义,从而导致这个问题。把变量定义放到一个源文件中,然后在头文件中写成
extern bool bGolbal ;追问

bool bGolbal ; 我想定义为全局变量 class B 中的某些函数会访问这个变量,并改变它 的 值,
您说的,我试了一下,因该是我没有理解清楚,能否详细说明一下,谢谢 !

追答

我说的很清楚了,你怎么试的,遇到什么错误了

追问

变量的值没有改变

追答

"你怎么试的"!我根本不知道你怎么改的,怎么知道你为什么变量值不变。列最新代码

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-09
我把vs2008关了,再打开,帮刚才的东西复制上去就能调试成功了,但不知道为什么
第2个回答  2011-12-23
class B的定义最后少了个分号,不知道是不是这个原因

已经在其他文件中定义, fatal error LNK1169: 找到一个或多个多重定义...
头文件不得包含变量定义和函数体,否则被包含一次,这些变量、函数就被重新定义,从而导致这个问题。把变量定义放到一个源文件中,然后在头文件中写成 extern bool bGolbal ;

fatal error LNK1169: 找到一个或多个多重定义的符号
codoblock运行可以,撸主尝试重启下VC再运行

vc2008中 fatal error LNK1169: 找到一个或多个多重定义的符号
void num::show(){ cout<<k;} void num::get(){ cin>>k;} 所以在链接的时候会报错多重定义。一般习惯上把类的声明写在头文件里,实现写在cpp里

fatal error LNK1169: 找到一个或多个多重定义的符号\\\\是怎么回事?
把getch();去掉就可以了,如果要无限地输入整数并判断只要加个while(1)就可以了。试试 include<stdio.h> include<conio.h> int main(){ while(1){ int x;printf("请输入一个正整数;");scanf("%d",&x);if(x%6==0)printf("yes!\\n");else printf("no!\\n");} return 0;} ...

...error LNK1169: 找到一个或多个多重定义的符号
这是因为你一个工程里包含了多个main()函数,一个工程只能包含一个main()函数,多个就报错,建议把不用的main函数保存后删除,就没问题了。 你不可以建两个工程吗?或者试试两个程序可不可以写在一个main()函数里。

VS2010报错: fatal error LNK1169: 找到一个或多个多重定义的符号
说明你的工程里面应该有不止1个 main 函数!仔细检查下。是不是工程里有多个源文件,而其他的源文件中也有 main 函数呢。记得采纳啊

VS2010报错: fatal error LNK1169: 找到一个或多个多重定义的符号
说明你的工程里面应该有不止1个 main 函数! 仔细检查下。是不是工程里有多个源文件,而其他的源文件中也有 main 函数呢。记得采纳啊

...error LNK1169: 找到一个或多个多重定义的符号”是怎么回事??_百度...
两个for循环里的i的值不一样啊 一个是i=2;一个是i=0; 也就是整型变量i有两个赋值 当然出错误了

c语言fatal error LNK1169: one or more multiply defined symbols fou...
one or more multiply defined symbols found 这句话指的是有多个符号被重定义了,有可能是你的代码问题,也有可能是工程建的有问题。

...error LNK1169: 找到一个或多个多重定义的符号 1>。。。怎么改错啊...
vc编译器吗?将工程目录下面的debug目录删除然后重新编译 打开任务管理器看看里面有没有o。exe,有的话先用任务管理器关闭

相似回答