C/C++中的multiple definition of“****”的问题
来源:互联网 发布:unity3d开发地方麻将 编辑:程序博客网 时间:2024/06/14 18:20
先说一下我的错误:
f:/windriver/gnu/4.3.3-vxworks-6.9/lib/gcc/../../include/c++/4.3/exception:119: multiple definition of `AppCondition::getSkeletonCondition() const'
根据自己知道的经验来说应该是头文件的重复包含的问题。但是翻开对应的头文件来看发现存在避免头文件重复包含的命令:
#ifndef GLOBAL
#define GLOBAL
XXXXX
XXXXX
#endif
但是就是编译不过去。后来就把对应的文件名在头文件的目录下进行搜素发现在两个不同的子目录下存在相同的文件。哎,不得不说接受的这个项目了!
之后再网上搜了一下进行简单的总结:
main.cpp
#include "global.h"
int Main(....)
{
...
}
file_1.cpp
#include "global.h"
....
file_2.cpp
#include "global.h"
...
global.h中写有所有的全局变量及其初始化值 和函数声明
在编译的时候就会出错:
first defined here
multiple definition of
原因是因为在多次包含global.h时重复定义了变量和函数。
解决方法:
方法一:
在global.c(或.cpp) 中声明变量(不初始化),然后头文件global.h中在所有的变量声明前加上extern
如 extern int flag;
然后在其他需要使用全局变量的 cpp文件中包含.h 文件而不要包含 .cpp 文件。编译器会为global.cpp 生成目标文件,然后连接时,在使用全局变量的文件中就会连接到此文件 。
方法二:
在global.h中加入防止多次重复定义的宏判断符号
你的.H里面要加上条件编译
#ifndef GLOBAL
#define GLOBAL
XXXXX
XXXXX
#endif
记住:在ifndef时一定要在第一行,前边不要有任何的注释或语句。
- C/C++中的multiple definition of“****”的问题
- 解决C/C++中的multiple definition of问题
- 解决C/C++中的multiple definition of问题
- 解决C/C++中的 multiple definition of 问题
- 初次将一个C文件 拆开写 遇到的 蛋疼问题"multiple definition of" 错误
- C编译错误--multiple definition of 'XXX'
- multiple definition of 问题
- 解决multiple definition of sqlca的问题
- 由实例浅析C中的static、extern、multiple definition of用法及陷阱
- 【问题】multiple definition of `_start'
- 解决 multiple definition of 问题
- c语言重复定义 multiple definition of `Recusion'
- 【C++】变量定义在.h头文件导致 multiple definition of 的解决方法和根本原因
- 在使用btest中的demo中遇到 multiple definition of 的问题!
- 命名空间出错的问题multiple definition of
- 【c/c++】multiple definition-->static & extern
- 解决multiple definition of的方法
- C++ 编程 multiple definition of 的解决办法
- ScrollView的滑动监听
- java的动态绑定与静态绑定
- react native navigator禁用滑动返回
- GTKmm 練習筆記(三)Drawing Area實作動畫鬧鐘(cairo 向量繪圖)
- 文件格式大全
- C/C++中的multiple definition of“****”的问题
- $stateParams 获取参数失败
- UGUI提高<六> ToggleGroup勾选组和Dropdown下拉菜单
- DTFT和DFT
- c++赋值运算符
- 多线程、工厂模式、GUI+JAVA学习笔记-DAY25
- 你不知道的HashMap与HashSet
- vsftpd服务----配置
- android:windowSoftInputMode 软键盘属性使用