zoukankan
html css js c++ java
解决 multiple definition of
总结了解决multiple definition of
的方法:
问题原因:
当多个文件包含同一个头文件时,并且你的.H里面没有加上条件编译
#ifndef TEST_H
#define TEST_H
#endif
就会独立的解释,然后生成每个文件生成独立的标示符。在编译器连接时,就会将工程中所有的符号整合在一起,由于,文件中有重名变量,于是就出现了重复定义的错误。
方法1:
给每一个头文件加上条件编译,避免该文件被多次引用时被多次解释,这是个应该是习惯。这个方法会解决大部分低级问题。
方法2:
当方法1无效时,可以把所有的全局变量放入一个头文件 global.h (名字随意起,但要加条件编译)中,每一个变量前面加extern,声明一下这些变量将在其它文件中定义。 然后建立一个和头文件名字对应的.c or .cpp文件 如global.c。在里面声明所有的全局变量。例如:void(*Handl_Display)();
然后,让涉及到全局变量的文件include ”global.h“。这样编译时,会先对global.c编译生成一个global.o ,然后再和其它文件的.o链接生成可执行文件。
方法3:
懒人方法,在所有的全局变量前加上static ,声明成静止变量。也能解决问题。
所有的方法都是网来的,O(∩_∩)O哈哈~
谢谢所有的提供方法的哥们~
查看全文
相关阅读:
比SRCNN效果好的传统超分辨率算法汇总
CSS3 2D转换
CSS3 文本效果
CSS3 Gradients(渐变)
CSS3 背景
CSS3 圆角
CSS3 边框
CSS3 简介
CSS 属性选择器
CSS 媒体类型
原文地址:https://www.cnblogs.com/funny-world/p/3300910.html
最新文章
算法笔记_046:跳台阶问题(Java)
算法笔记_045:币值最大化问题(Java)
(高级篇 Netty多协议开发和应用)第十四章-私有协议栈开发
(高级篇 Netty多协议开发和应用)第十三章-文件传输
(高级篇 Netty多协议开发和应用)第十二章-UDPt协议开发
(高级篇 Netty多协议开发和应用)第十一章-WebSocket协议开发
(高级篇 Netty多协议开发和应用)第十章-Http协议开发应用(基于Netty的HttpServer和HttpClient的简单实现)
(高级篇 Netty多协议开发和应用)第十章-Http协议开发应用
(中级篇 NettyNIO编解码开发)第九章-Jboss Marshalling 编解码
(中级篇 NettyNIO编解码开发)第八章-Google Protobuf 编解码-2
热门文章
(中级篇 NettyNIO编解码开发)第七章-java序列化
C++的UML类图
字符串反序,逆序输出字符串
栈空间默认1M,测试存进数据时间
求字符串长度StringLength();
MLE、MAP、贝叶斯三种估计框架
超分辨率的带宽优势和流量优势
超分辨率技术前沿调研
C++输入cin,输出cout,换行endl,getline连续读取字符
C++标准命名空间std
Copyright © 2011-2022 走看看
当多个文件包含同一个头文件时,并且你的.H里面没有加上条件编译
#ifndef TEST_H
#define TEST_H
#endif
就会独立的解释,然后生成每个文件生成独立的标示符。在编译器连接时,就会将工程中所有的符号整合在一起,由于,文件中有重名变量,于是就出现了重复定义的错误。
方法1:
给每一个头文件加上条件编译,避免该文件被多次引用时被多次解释,这是个应该是习惯。这个方法会解决大部分低级问题。
方法2:
当方法1无效时,可以把所有的全局变量放入一个头文件 global.h (名字随意起,但要加条件编译)中,每一个变量前面加extern,声明一下这些变量将在其它文件中定义。 然后建立一个和头文件名字对应的.c or .cpp文件 如global.c。在里面声明所有的全局变量。例如:void(*Handl_Display)();
然后,让涉及到全局变量的文件include ”global.h“。这样编译时,会先对global.c编译生成一个global.o ,然后再和其它文件的.o链接生成可执行文件。
方法3:
懒人方法,在所有的全局变量前加上static ,声明成静止变量。也能解决问题。
所有的方法都是网来的,O(∩_∩)O哈哈~
谢谢所有的提供方法的哥们~