[英]error: expected ';', ',' or ')' before '=' token
[英]error: expected ')' before '*' token
我有这个包含文件( 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()
的函数定义
有人可以告诉我为什么我收到此错误?
因为系统memory.h
正在影响你的memory.h
,导致#include
成功而不声明你的类型。 几个可能的修复:
#include <myproj/memory.h>
)。 #include
优先规则"
生效。 这个答案真的很晚,但我遇到了类似的问题。
我认为您的问题与.h文件中的拼写错误有关,您在其中声明了一个struct mm emory。 如果你删除额外的'm'它应该工作。
在你的代码中,你为memory.h定义了这样的代码
#ifndef MEMORY_H
#define MEMORY_H
...
...
#endif
如果您在项目中使用的任何其他文件具有相同的#define即MEMORY_H,那么您可能会收到此错误。
解:
#ifndef XYZ_MEMORY_H
#define XYZ_MEMORY_H
...
...
#endif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.