预期')'之前' *'令牌,似乎无法找到错误

时间:2016-04-06 00:57:06

标签: c debugging

因此,每当我尝试在我的服务器上运行Makefile时,它总是会给我错误的是" Memory.c:9错误:预期')'之前' *'令牌。但是当我尝试在自己的计算机上运行它时,它运行得很好。我一直试图弄清楚出了什么问题,但似乎无法找到它。

我已经附加了我程序的这一部分中使用的3个文件。 Memory.c,Memory.h和ProcessInput.h。

这是Memory.c

/* Initializes memory */

#include <stdio.h>
#include <stdlib.h>

#include "memory.h"


void initializeMemory(memory** memArray, int memSize)
{
    // Allocating space for memory array
    *memArray = malloc(memSize * sizeof(memory));
    if(*memArray == NULL)
    {
        fprintf(stderr, "Error allocating space for array of memory" );
        exit(1); // exit(1) = Unsuccessful exit
    }

    // Initializing the contents within memory array
    int i = 0;
    for(i = 0; i < memSize; i ++)
    {
        ((*memArray)[i]).occupied = false;
    }
}

这是Memory.h

// Definitions for Memory.c 

#define bool int
#define true 1
#define false 0

#include "ProcessInput.h"

// Include guards to prevent redefinition of struct
#ifndef MEMORY_H
#define MEMORY_H

typedef struct memoryDetail
{
    process process; 
    bool occupied;
} memory;

#endif

// Function declaration for memory.c
void initializeMemory(memory** memArray, int memSize);

ProcessInput.h中唯一使用的是ProcessInput.h中定义的流程结构

这是ProcessInput.h

// Include guards to prevent redefinition of struct
#ifndef PROCESSDETAIL_H
#define PROCESSDETAIL_H

typedef struct processDetail
{
    int timeCreated; 
    int processID; 
    int memorySize;
    int jobTime;
} process;

#endif

// function declarations for ProcessInput.c
void processInput(int* maxSize, int* count, process** processes, char* fileName);

我不太清楚为什么它会给我错误。我不知道我应该把丢失的右支撑放在哪里。任何建议都非常感谢!

编辑:据我所知,这些是我看过的以下问题,但没有用。

error: expected ‘)’ before ‘*’ token

Multiple of same error while compiling "error: expected ')' before '*' token

http://www.dreamincode.net/forums/topic/288956-error-expected-before-token/

感谢大家的帮助!

2 个答案:

答案 0 :(得分:1)

<memory.h>是来自预标准时代的C库的标题。您的标准库很可能仍然提供它,编译器会使用那个而不是您的。

尝试重命名头文件并查看它是否发生了任何变化。

答案 1 :(得分:1)

#include "memory.h"#include "Memory.h"不同(即C区分大小写)

如果您尝试#include "myfile.h"而不是#include "MyFile.h",则错误可能会更明显。在这种情况下,只是编译器找到系统memory.h