C++ 发现多重定义符号的问题(LNK 1169)
我正在努力分解存在于两个文件中的工作代码(main.cpp和header.h->main.cpp、functions.cpp和header.h) 我的问题似乎完全围绕这个结构和我对*根指针的使用:C++ 发现多重定义符号的问题(LNK 1169),c++,function,pointers,struct,linked-list,C++,Function,Pointers,Struct,Linked List,我正在努力分解存在于两个文件中的工作代码(main.cpp和header.h->main.cpp、functions.cpp和header.h) 我的问题似乎完全围绕这个结构和我对*根指针的使用: struct avl_node { int data; struct avl_node* left; struct avl_node* right; }*root; 当我的代码位于两个文件(main.cpp和header.h)中时,代码运行正常,当我将函数的定义拆分为func
struct avl_node
{
int data;
struct avl_node* left;
struct avl_node* right;
}*root;
当我的代码位于两个文件(main.cpp和header.h)中时,代码运行正常,当我将函数的定义拆分为functions.cpp时,LNK1169错误开始出现
我是否误解了事情应该如何进行?在标题中:
struct avl_node
{
int data;
avl_node* left;
avl_node* right;
};
extern avl_node* root;
仅在一个源文件中:
#include "ThatHeader.h"
avl_node* root;
当前,您将
root
的定义放在标题中。这意味着包含此头的每个源文件最终都包含该定义。当这些文件链接在一起时,链接器会发现相同名称的多个定义,并进行投诉
解决方案是只在头文件中提供一个声明(这就是extern
关键字所做的),并且只在一个源文件中提供一个定义
另请参见:显示完整的代码示例(如果是这样的话,可以拆分为文件)提供了大量获取帮助的信息。噢,哇,非常感谢!我真的很感谢你的帮助!