gpt4 book ai didi

c - 错误的多重定义 - CodeBlocks

转载 作者:行者123 更新时间:2023-11-30 15:13:13 26 4
gpt4 key购买 nike

我的项目中有以下文件:

table.h - signatures of methods used in link.c and hash.c
link.c - implements ALL methods in table.h
hash.c - implements ALL methods in table.h
test.c - unit tests for link.c and hash.c

我在头文件中使用了防护。 link.c 和 hash.c 对同一组方法有不同的实现。

当我构建并运行我的项目时,每个方法都会抛出错误,其中显示:“多重定义”

我尝试将方法声明为 extern,但它不能解决问题。

表.h

#ifndef TABLE_H_INCLUDED
#define TABLE_H_INCLUDED

typedef struct Table *Table_t;

Table_t Table_new(void);

void Table_free(Table_t oTable);

int Table_getLength(Table_t oTable);

int SymTable_put(SymTable_t oSymTable,
const char *pcKey,
const void *pvValue);

void *Table_get(Table_t oTable,
const char *key);

int Table_contains(Table_t oTable,
const char *key);


void *Table_remove(Table_t oTable,
const char *key);


void *Table_replace(Table_t oTable,
const char *key,
const void *value);
#undef TABLE_H_INCLUDED
#endif

错误日志:

obj\Debug\table_link.o||在函数“Table_new”中:|

E:\symbolTableProject\table_link.c|33|`Table_new'的多个定义|

obj\Debug\table_hash.o:E:\symbolTableProject\table_hash.c|36|首先在此处定义|

如何解决这个问题?

最佳答案

我想重点是

link.c - implements ALL methods in table.h
hash.c - implements ALL methods in table.h

这些文件无法链接到相同的输出:我的意思是,每个函数必须实现唯一。

您可以在单个/多个 c 文件中实现所有函数,而不是在使用函数的文件中实现#include "table.h"。重要的是每个函数必须仅在源文件中实现1次。

关于c - 错误的多重定义 - CodeBlocks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34761214/

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