bool Global_Test(){....return true;}
出错信息如下:
bool __cdecl Global_Test(void)" (?Global_Test@@YA_NXZ) already defined in Test_Setting.obj
20 个解决方案
#1
你那个头文件这样处理一下:
#ifndef abcdefg
#define abcdefg
原头文件内容
#endif
这样就可以避免重复定义了
#ifndef abcdefg
#define abcdefg
原头文件内容
#endif
这样就可以避免重复定义了
#2
如果调用两次头文件的话,想当于定义两次 Global_Test() 函数,当然要出错了~~~
#3
2ndboy(丢丢)说得对!Think in c++中说过,你可以看看头文件部分!
#4
两次引用的同一个头文件,当然要出错了,加一个欲编译命令吧,#ifndef...
#5
你的两个函数具有同样的定义,肯定会出错。用
#ifndef XXXX_H
#define XXXX_H
content
#endif
#ifndef XXXX_H
#define XXXX_H
content
#endif
#6
还是不行啊?老样子,我是这样用的:
#ifndef abcdefg
#define abcdefg
bool Global_Test(){
return false;
}
#endif
#ifndef abcdefg
#define abcdefg
bool Global_Test(){
return false;
}
#endif
#7
跟是否加预编译宏没有关系,原因在于
bool Global_Test(){....return true;}
包括了函数定义,该文件被两次包含,必然造成重复定义。应该把声明和定义分开。否则加预编译宏也不能解决问题。
bool Global_Test(){....return true;}
包括了函数定义,该文件被两次包含,必然造成重复定义。应该把声明和定义分开。否则加预编译宏也不能解决问题。
#8
所谓的那个预编译宏不是为了防止同一个头文件多次被不同的cpp包含的,而是为防止同一个头文件多次被同一个cpp包含。
#9
TO:aileen_long(期待2002)
因为这个函数要在多个CPP文件里被调用,每次都写一遍太麻烦了,怎么才能解决?这样的调用一定要使用类吗?
因为这个函数要在多个CPP文件里被调用,每次都写一遍太麻烦了,怎么才能解决?这样的调用一定要使用类吗?
#10
在
#ifndef abcdefg
#define abcdefg
后面加上
#pragma once
就行了。
这表明只编译一遍。
#ifndef abcdefg
#define abcdefg
后面加上
#pragma once
就行了。
这表明只编译一遍。
#11
在
#ifndef abcdefg
#define abcdefg
后面加上
#pragma once
就行了。
这表明只编译一遍。
===================================
还是不行,错误依然~~~~~~
#ifndef abcdefg
#define abcdefg
后面加上
#pragma once
就行了。
这表明只编译一遍。
===================================
还是不行,错误依然~~~~~~
#12
我也发现了,我再试试别的方法。
#13
只把那个头文件加到STDAFX。H里也出这样的错误,怎么搞的?救命呀
#14
难道你不能将函数在头文件里声明,在cpp文件里实现。在所有需要该函数的地方包括这个头文件吗?
#15
我也试过在CPP里实现,但是老出global_test.cpp(32) : fatal error C1010: unexpected end of file while looking for precompiled header directive这种错误
#16
在头文件里加一句 #pragma once
#17
punpuny() 说得不错
#18
需要用到该函数的cpp只需要包含到其声明就行了,因为编译器只检查调用到的函数是否被声明过,至于函数体只要存在于当前工程中的任何一个cpp即可,链接器自己会去找的。
#19
我也试过在CPP里实现,但是老出global_test.cpp(32) : fatal error C1010: unexpected end of file while looking for precompiled header directive这种错误
如果是这个错的话,在你的cpp文件中包括stdafx.h头文件。
如果是这个错的话,在你的cpp文件中包括stdafx.h头文件。
#20
在.h文件中只要这样定义:
bool Global_Test();
在global_test.cpp(不用什么ifdef等等的东西)中实现该函数:
bool Global_Test()
{
return true;
}
bool Global_Test();
在global_test.cpp(不用什么ifdef等等的东西)中实现该函数:
bool Global_Test()
{
return true;
}
#21
#1
你那个头文件这样处理一下:
#ifndef abcdefg
#define abcdefg
原头文件内容
#endif
这样就可以避免重复定义了
#ifndef abcdefg
#define abcdefg
原头文件内容
#endif
这样就可以避免重复定义了
#2
如果调用两次头文件的话,想当于定义两次 Global_Test() 函数,当然要出错了~~~
#3
2ndboy(丢丢)说得对!Think in c++中说过,你可以看看头文件部分!
#4
两次引用的同一个头文件,当然要出错了,加一个欲编译命令吧,#ifndef...
#5
你的两个函数具有同样的定义,肯定会出错。用
#ifndef XXXX_H
#define XXXX_H
content
#endif
#ifndef XXXX_H
#define XXXX_H
content
#endif
#6
还是不行啊?老样子,我是这样用的:
#ifndef abcdefg
#define abcdefg
bool Global_Test(){
return false;
}
#endif
#ifndef abcdefg
#define abcdefg
bool Global_Test(){
return false;
}
#endif
#7
跟是否加预编译宏没有关系,原因在于
bool Global_Test(){....return true;}
包括了函数定义,该文件被两次包含,必然造成重复定义。应该把声明和定义分开。否则加预编译宏也不能解决问题。
bool Global_Test(){....return true;}
包括了函数定义,该文件被两次包含,必然造成重复定义。应该把声明和定义分开。否则加预编译宏也不能解决问题。
#8
所谓的那个预编译宏不是为了防止同一个头文件多次被不同的cpp包含的,而是为防止同一个头文件多次被同一个cpp包含。
#9
TO:aileen_long(期待2002)
因为这个函数要在多个CPP文件里被调用,每次都写一遍太麻烦了,怎么才能解决?这样的调用一定要使用类吗?
因为这个函数要在多个CPP文件里被调用,每次都写一遍太麻烦了,怎么才能解决?这样的调用一定要使用类吗?
#10
在
#ifndef abcdefg
#define abcdefg
后面加上
#pragma once
就行了。
这表明只编译一遍。
#ifndef abcdefg
#define abcdefg
后面加上
#pragma once
就行了。
这表明只编译一遍。
#11
在
#ifndef abcdefg
#define abcdefg
后面加上
#pragma once
就行了。
这表明只编译一遍。
===================================
还是不行,错误依然~~~~~~
#ifndef abcdefg
#define abcdefg
后面加上
#pragma once
就行了。
这表明只编译一遍。
===================================
还是不行,错误依然~~~~~~
#12
我也发现了,我再试试别的方法。
#13
只把那个头文件加到STDAFX。H里也出这样的错误,怎么搞的?救命呀
#14
难道你不能将函数在头文件里声明,在cpp文件里实现。在所有需要该函数的地方包括这个头文件吗?
#15
我也试过在CPP里实现,但是老出global_test.cpp(32) : fatal error C1010: unexpected end of file while looking for precompiled header directive这种错误
#16
在头文件里加一句 #pragma once
#17
punpuny() 说得不错
#18
需要用到该函数的cpp只需要包含到其声明就行了,因为编译器只检查调用到的函数是否被声明过,至于函数体只要存在于当前工程中的任何一个cpp即可,链接器自己会去找的。
#19
我也试过在CPP里实现,但是老出global_test.cpp(32) : fatal error C1010: unexpected end of file while looking for precompiled header directive这种错误
如果是这个错的话,在你的cpp文件中包括stdafx.h头文件。
如果是这个错的话,在你的cpp文件中包括stdafx.h头文件。
#20
在.h文件中只要这样定义:
bool Global_Test();
在global_test.cpp(不用什么ifdef等等的东西)中实现该函数:
bool Global_Test()
{
return true;
}
bool Global_Test();
在global_test.cpp(不用什么ifdef等等的东西)中实现该函数:
bool Global_Test()
{
return true;
}