`
xiaoer_1982
  • 浏览: 1903772 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

解决C/C++中的multiple definition of问题

阅读更多


www.diy567.com累了,去上面休息一下下,QQ空间,美文,非主流,网络日记,搞笑短信,祝福短信,热门短信,有意思啊

 

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时一定要在第一行,前边不要有任何的注释或语句。

分享到:
评论

相关推荐

    VLC2.0.1编译错误总结及解决方案

    下面,我们将基于提供的文件信息,深入探讨VLC2.0.1编译过程中的一些常见问题及其解决方案。 ### 编译错误1:Cannot find DirectX headers #### 问题描述 在编译VLC的过程中,可能会遇到“找不到DirectX头文件”的...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    The goal of this guide is to manage this complexity by describing in detail the dos and don'ts of writing C++ code. These rules exist to keep the code base manageable while still allowing coders to ...

    Practical C++ Programming C++编程实践

    File Input/Output C++ File I/O Conversion Routines Binary and ASCII Files The End-of-Line Puzzle Binary I/O Buffering Problems Unbuffered I/O Designing File Formats C-Style I/O Routines C-Style ...

    Qt下使用微软的TTS

    在本文中,我们将深入探讨如何在Qt环境下利用微软的文本转语音(Text-to-Speech, TTS)技术。Qt是一个跨平台的应用程序开发框架,它提供了丰富的图形用户界面(GUI)工具,而微软的TTS服务则允许我们把文本转换为...

    C++ 标准 ISO 14882-2011

    - C++和ISO C(C++ and ISO C)、C++和ISO C++ 2003(C++ and ISO C++ 2003)、C标准库(C standard library)讨论了C++与其他标准和版本之间的兼容性问题。 附录D. 兼容性特性(Compatibility features) - 增量...

    C++跨平台的坑重名类导致的崩溃问题_例子代码

    3. **链接器标志**:使用链接器标志如`-Wl,--allow-multiple-definition`在某些情况下可以容忍重复定义,但这不是一个通用的解决方案,因为可能会导致不可预见的行为。 4. **库版本管理**:确保每个库都有唯一的...

    Google C++ Style Guide_英文版.pdf

    This can help avoid multiple definition errors. #### Scoping - **Namespaces:** Namespaces are used to group related functionality and prevent name collisions. Prefer using namespaces over global ...

    C++经典书籍高频词汇_不怕看不懂英文著作

    在学习C++的过程中,很多初学者常常遇到阅读英文原著书籍时理解困难的问题。为了帮助大家更好地掌握C++核心概念和技术,本篇将深入分析三本C++经典书籍中的高频词汇,并针对出现次数较少的词汇提供中文解释。这样...

    LNK 重复定义的解决办法.zip

    链接器可能有某些选项可以控制对重复定义的处理,例如GCC的`-Wl,--allow-multiple-definition`选项,但这通常不是解决问题的首选方法,因为可能引入意想不到的副作用。 7. **模块化设计** 通过良好的模块化设计,...

    防止变量重复定义、头文件重复包含、嵌套包含

    在C/C++程序中,头文件通常包含了函数声明、类型定义等信息。如果一个头文件被多个源文件包含,或者在一个源文件中被多次包含,则会导致不必要的重复和潜在的编译错误。 **解决方法:** 为了避免重复包含头文件,...

    编译TinkerBoard2板卡BuildRoot系统.pdf

    1.2.9、`multiple definition of `fwriter_buffer' `bwriter_buffer'`:这通常是重复定义的问题,检查Makefile或源代码以消除重复。 1.3、编译kernel 在BuildRoot中,配置内核时选择与TinkerBoard2相匹配的选项。...

    UE(官方下载)

    You can use a combination of a script and tool to create a single file from multiple files. Sum Column/Selection in Column Mode This power tip demonstrates how to calculate the sum from a column of ...

    link5.tar.gz

    最后,关于标签“gcc编译”,在处理这些问题时,GCC提供了丰富的编译选项,如-Wl,--allow-multiple-definition等,来帮助开发者解决链接过程中的问题。了解并熟练运用这些选项,可以提高开发效率并减少错误。 总的...

    Google C++ International Standard.pdf

    6.2 One-definition rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.3 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....

    acpi控制笔记本风扇转速

    AcpiExec: Implemented full region support for multiple address spaces. SpaceId is now part of the REGION object. BZ 429 ---------------------------------------- 11 October 2006. Summary of changes ...

    java错误提示英汉对照

    - **#define定义预定义**:虽然不是Java中的概念,但这里指的可能是C/C++中的宏定义,用于定义常量或者函数等。 - **Abstract抽象的**:用于修饰类或者方法,表明它们不能被实例化,只能作为其他类的基类。 ##### -...

    Visual C++ 编程资源大全(英文源码 其它)

    20.zip Jump to Next/Previous Function Definition 跳转到下一个/上一个功能定义(4KB)<END><br>21,21.zip Inverting Assignment Operations 转化操作任务(5KB)<END><br>22,22.zip VC4.2 style ...

    VclZip pro v3.10.1

    New ZLib methods for optimized compression and decompression of single entities of data in standard ZLib format, without the overhead of the PKZip format. This is excellent for compression of data to ...

    gRPC框架初探

    ### gRPC框架初探 ...gRPC的强大之处在于它不仅仅是一个简单的RPC框架,而是提供了一整套解决方案,包括服务定义、编译工具链、高性能通信协议等,这些特性使得gRPC成为现代微服务架构中的首选工具之一。

Global site tag (gtag.js) - Google Analytics