我有这个包含文件(memory .h
)
#ifndef MEMORY_H
#define MEMORY_H
#ifdef __cplusplus
extern "C" {
#endif
typedef struct mmemory {
int* cells;
int* current_cell;
int cells_number;
} memory;
void memory_init(memory* mymemory, int size);
void step_left(memory* mymemory, int steps);
void step_right(memory* mymemory, int steps);
void cell_inc(memory* mymemory, int quantity);
void print_cell(memory* mymemory);
void get_char(memory* mymemory);
#ifdef __cplusplus
}
#endif
#endif /* MEMORY_H */
此实施文件(memory.c
)
#include <stdlib.h>
#include "memory.h"
void
memory_init (memory* mymemory, int size)
{
mymemory->cells = (int*) malloc (sizeof (int) * size);
mymemory->cells_number = size;
mymemory->current_cell = (int*) ((mymemory->cells_number / 2) * sizeof (int));
}
... //other function definitions follow
当我尝试编译memory.c
时,每个函数定义都会出现此错误
src / memory.c:5:错误:预期')'在'*'标记之前
其中第5行是memory_init()
有人可以告诉我为什么我会收到这个错误吗?
答案 0 :(得分:14)
因为系统memory.h
遮蔽了您的memory.h
,导致#include
成功而未声明您的类型。几个可能的修复:
#include <myproj/memory.h>
)包含您的文件。#include
中包含的文件名的"
优先规则生效。答案 1 :(得分:3)
这个答案真的很晚,但我遇到了类似的问题。
我认为您的问题与 .h 文件中的拼写错误有关,您在其中声明了一个结构 mm emory。如果删除额外的'm',它应该可以工作。
答案 2 :(得分:-1)
在您的代码中,您已为memory.h定义了这样的内容。
#ifndef MEMORY_H
#define MEMORY_H
...
...
#endif
如果您在项目中使用的任何其他文件具有相同的#define即MEMORY_H,则可能会出现此错误。
解决方案:
#ifndef XYZ_MEMORY_H
#define XYZ_MEMORY_H
...
...
#endif