抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

原因

重复定义错误。C语言规定:一个变量可以多次声明但是只能定义一次。多个.c或.cpp文件同时引用一个.h文件时,其被包含至多个目标文件(.o)中,链接时,.h文件中定义的变量/函数会出现重复定义的错误。

解决方法

  • C语言中可以在.h文件中添加条件编译解决(#ifndef…)。在C++中无效,引文C++中#indef的作用域仅限一个文件
  • C++中可在变量/函数前添加static
  • 在c/cpp文件中定义extern修饰的变量
  • 尽量避免在.h文件中定义变量、函数
  • C++中可使用inline修饰函数
  • C中可以定义宏函数(容易写错,因此C++中出现了inline)

解释

使用static修饰的函数、变量,每个cpp文件都调用属于其本身的函数、变量,两者地址不同、也不互通。

参考文献

  1. https://blog.csdn.net/lxzhong1/article/details/123023513
  2. https://zhuanlan.zhihu.com/p/577994847

评论