gpt4 book ai didi

c - 如何在多个源文件中使用相同的结构?

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:11 26 4
gpt4 key购买 nike

我有 3 个源文件:matrix.c、tetramino.c 和 learntris.c(其中包括 header tetramino.hmatrix.h,将其链接到各自的文件)。我有一个结构:所有这些文件都需要的 struct tetramino。阅读此问题及其答案后- How to use a defined struct from another source file? ,我创建了一个头文件 structure.h,现在我的文件如下所示:

在structure.h中:

typedef struct tetramino  
{
int type;
char *p;
}tetramino;

在 matrix.h 中:

#include"structure.h"
int print_matrix(void);
int clear_matrix(void);

在 tetramino.h 中:

#include"structure.h"
int rotate(void);
int set_tetramino(void);

最后,在主要的 learntris.c 文件中包含:

#include"structure.h"
#include"matrix.h"
#include"tetramino.h"

现在,在编译它们时,我得到了这些错误:

error: redefinition of 'struct tetramino'

error: conflicting types for 'tetramino'

问题出在哪里?

最佳答案

当你#include <structure.h>在您的所有文件中,它每次都包含它们。这导致它每次都尝试定义结构。

使用include guards保证头文件被include一次。

#ifndef STRUCTURE_H
#define STRUCTURE_H

typedef struct tetramino
{
int type;
char *p;
}tetramino;

#endif /* STRUCTURE_H */

建议在所有头文件中使用保护,但这不是必须的,而是一个很好的做法。


如 Neroku 所述,您可以使用 #pragme once反而。阅读更多 here .

关于c - 如何在多个源文件中使用相同的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44085879/

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