gpt4 book ai didi

c - 为什么在 C 代码中出现多重定义错误?

转载 作者:太空狗 更新时间:2023-10-29 15:09:50 25 4
gpt4 key购买 nike

我目前正在用 c 语言模拟 adt,我应该制作一个包含字符串的二叉搜索树,我目前正在开始编码,但我遇到了这个错误,它没有说明错误来自哪里,这是代码,有人可以帮助我吗。

树.h

#ifndef tree_h
#define tree_h
#include <stdbool.h>
#include <stdlib.h>

typedef struct tree_node* node_ptr;

struct tree_node {
char* word;
node_ptr leftNode, rightNode;
};

node_ptr start = NULL;

void addItem(char*, int);
void display();

#endif

树.c

#include "tree.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>


void addItem(char arr[], int mode) {
node_ptr temp, temp2;

temp = (node_ptr)malloc(sizeof(struct tree_node));
temp->leftNode=NULL;
temp->rightNode=NULL;

if(mode == 1){
temp->word = arr;
start = temp;
}
}



void display() {
node_ptr temp;
temp = start;
printf("%s", start->word);
}

主.c

#include "tree.h"
#include <stdio.h>
#include <conio.h>

int main() {
char word[31];

printf("Enter Root Word: ");
gets(word);
addItem(word, 1);
}

最佳答案

问题出在 tree.h 中的语句。

node_ptr start = NULL;

并且您在 main.ctree.c 中都包含了 tree.h。这给出了全局范围内的变量 start 的多重定义错误。你真正需要的是,

// tree.h

extern node_ptr start;

并在单个源文件中定义,如 -

// tree.c

#include "tree.h"
........
node_ptr start = null;

关于c - 为什么在 C 代码中出现多重定义错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11622258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com