代码之家  ›  专栏  ›  技术社区  ›  Federico klez Culloca

错误:“*”标记前应为“)”

c
  •  6
  • Federico klez Culloca  · 技术社区  · 14 年前

    我有这个文件( 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
    

    内存.c 对于每个函数定义,我都会得到这个错误

    src/memory.c:5:错误:“*”标记前应为“)”

    其中第5行是的函数定义 memory_init()

    3 回复  |  直到 14 年前
        1
  •  16
  •   llasram    14 年前

    因为系统 memory.h 正在跟踪你的 内存.h ,导致 #include 在不声明类型的情况下成功。几种可能的修复方法:

    • #include <myproj/memory.h> ).
    • #包括 " 生效。
    • 确保C预处理器include path选项将项目头路径放在系统头路径之前。
        2
  •  3
  •   Student Ilia Akhmadullin    8 年前

    我认为你的问题与你的拼写错误有关 h 毫米 埃默里。如果你去掉那个多余的“m”,它应该会起作用。

        3
  •  -1
  •   Luke Woodward    13 年前

    #ifndef MEMORY_H
    #define MEMORY_H
    ...
    ...
    #endif
    

    如果您在项目中使用的任何其他文件具有相同的#define(即内存),则可能会出现此错误。

    解决方案:

    #ifndef XYZ_MEMORY_H
    #define XYZ_MEMORY_H
    ...
    ...
    #endif