因此,每当我尝试在我的服务器上运行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/
感谢大家的帮助!
答案 0 :(得分:1)
<memory.h>
是来自预标准时代的C库的标题。您的标准库很可能仍然提供它,编译器会使用那个而不是您的。
尝试重命名头文件并查看它是否发生了任何变化。
答案 1 :(得分:1)
#include "memory.h"
与#include "Memory.h"
不同(即C区分大小写)
如果您尝试#include "myfile.h"
而不是#include "MyFile.h"
,则错误可能会更明显。在这种情况下,只是编译器找到系统memory.h
。