0
我有我的項目中的以下文件:在我的頭文件多個定義 - 代碼塊
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「的多重定義」,它並沒有解決這個問題。
table.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 \調試\ table_link.o ||在功能`Table_new「:|
E:\ symbolTableProject \ table_link.c | 33 |`Table_new'的多重定義|
obj \ Debug \ table_hash.o:E:\ symbolTableProject \ table_hash.c | 36 |首先在此處定義|
我該如何解決這個問題?
你也可以包含這些文件嗎? –
向我們展示的重要文件是頭文件。您必須在頭文件中定義一些符號(我們不知道哪一個符號,因爲您沒有向我們展示完整的和未經編輯的錯誤輸出),而不僅僅是聲明它。請*編輯您的問題*以包含頭文件以及完整和未經編輯的錯誤日誌。也可以很好地向我們展示'test.c'文件的概要。 –
另外,do * both * link.c'和'hash.c'源文件定義了相同的函數嗎? –