重新定义结构

时间:2017-01-14 11:01:23

标签: c

以下是我的头文件trie.h的代码。 编译器继续显示以下错误:

In file included from speller.c:11:
./trie.h:3:8: error: redefinition of 'letter'
struct letter
       ^
./trie.h:3:8: note: previous definition is here
struct letter
       ^
1 error generated.
make: *** [speller.o] Error 1

代码:

struct letter
{
    int is_word;
    struct letter* arr[27];
};


// fuctions
struct letter* create_trie();
void free_trie(struct letter* trie);

1 个答案:

答案 0 :(得分:2)

很可能您的文件被多次包含,因此重新定义错误。 要避免此问题,请使用include guards

#ifndef HEADERNAME_DEFINED
#define HEADERNAME_DEFINED

// your code goes here.

#endif // HEADERNAME_DEFINED

或者你可以使用像#pragma once这样的非标准预处理程序指令来完成这项工作。它导致代码更少,有时编译速度更快 把它放在你的文件之上:

#pragma once

// your code goes here

注意: // HEADERNAME_DEFINED之后的评论(#endif部分)不是必需的。这只是程序员知道什么属于一起的暗示。