//list.h file
typedef struct _lnode{
struct _lnode *next;
size_t row;
size_t column;
short data;
}lnode;
typedef struct _llist{
struct _lnode *head;
size_t size;
}llist;
//matrix.h file
typedef struct _matrix{
size_t width;
size_t height;
size_t k;
int **data;
}matrix;
//smatrix.h file
#include "list.h"
#include "matrix.h"
typedef struct _smatrix{
size_t width;
size_t height;
size_t k;
llist data;
}smatrix;
smatrix* make_smatrix(matrix *m);
smatrix.h文件包括list.h文件和matrix.h文件。如果我将这些头文件包含在 smatrix.h 文件中,那么我得到
redefinition of 'lnode'. redefinition of '_llist' and redefinition of '_matrix' errors.
如果我从 smatrix.h 文件中获取这些 heder 文件,那么错误就会消失,但它会抱怨函数参数中的矩阵类型。我想在 smatrix.c 文件中调用 list.h 和 matrix.h 文件中定义的函数。我该怎么办?提前致谢..
可能存在多重包含的问题。
尝试保护你的头文件#ifndef
在这里阅读相关内容
文件列表.h
#ifndef _LISTH_
#define _LISTH_
<your code>
#endif
文件矩阵.h
#ifndef _MATRIXH_
#define _MATRIXH_
<your code>
#endif
如果标头包含中存在循环,它也会阻止您重新定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)