预期的';)';在'之前*';令牌,can';我似乎没有发现错误
因此,每当我尝试在服务器上运行Makefile时,它总是在“*”标记之前给我一个错误是“Memory.c:9 error:expected”)。但是当我尝试在自己的计算机上运行它时,它工作得很好。我一直在试图找出错误,但似乎找不到它 我已经附上了程序这一部分中使用的3个文件。Memory.c、Memory.h和ProcessInput.h 这是内存预期的';)';在'之前*';令牌,can';我似乎没有发现错误,c,debugging,C,Debugging,因此,每当我尝试在服务器上运行Makefile时,它总是在“*”标记之前给我一个错误是“Memory.c:9 error:expected”)。但是当我尝试在自己的计算机上运行它时,它工作得很好。我一直在试图找出错误,但似乎找不到它 我已经附上了程序这一部分中使用的3个文件。Memory.c、Memory.h和ProcessInput.h 这是内存 /* Initializes memory */ #include <stdio.h> #include <stdlib.h&g
/* 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;
}
}
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);
这是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);
我不太清楚它为什么会给我错误。我不知道我应该把丢失的右支架放在哪里。任何建议都非常感谢
编辑:据了解,以下是我看过但没有用的问题
感谢大家的帮助!
是前标准时代C库的一个标题。很可能您的标准库仍然提供了它,而编译器采用了该标题而不是您的标题
尝试重命名你的头文件,看看它是否有任何变化。
是前标准时代的C库中的头文件。很可能你的标准库仍然提供了它,而编译器使用了该头文件而不是你的头文件
尝试重命名您的头文件,看看它是否有任何更改。\include“memory.h”
不同于\include“memory.h”
(即C区分大小写)
如果您尝试使用#include“myfile.h”
而不是#include“myfile.h”
,错误可能会更明显。在这种情况下,编译器恰好找到系统内存。h
#include“memory.h”
不同于#include“memory.h”
(即C区分大小写)
如果您尝试使用
#包含“myfile.h”
而不是#包含“myfile.h”“
错误可能更明显。在这种情况下,编译器恰好找到系统内存.h
再补充一句,,我已经试着从遇到相同问题的人那里查看了有关堆栈溢出的其他问题,但我已经为每个问题提供了解决方案。您应该编辑问题,将找到的问题列表包括在内,以帮助防止其被重复关闭。服务器是否运行Linux和您的计算机Windows?是的,它正在运行Linux。约翰3136的解决方案对我有效。当我去重命名我的文件时,我有点事后诸葛亮。谢谢大家的帮助!再补充一句,,我已经试着从遇到相同问题的人那里查看了有关堆栈溢出的其他问题,但我已经为每个问题提供了解决方案。您应该编辑问题,将找到的问题列表包括在内,以帮助防止其被重复关闭。服务器是否运行Linux和您的计算机Windows?是的,它正在运行Linux。约翰3136的解决方案对我有效。当我去重命名我的文件时,我有点事后诸葛亮。谢谢大家的帮助!C是否区分大小写?我认为这是一个特定于平台的东西,Unix是,Windows不是。@immibis-你是对的,考虑到我们在一台计算机上工作,而不是在另一台计算机上工作,我仍然认为这是答案;-)当涉及到语言本身的标识符时,C绝对是区分大小写的。i、 可以有两个单独的函数,分别称为Main()和Main()。但是文件名不是C标识符,在这种情况下[sic]是平台(和实现)定义的。@immibis大多数“Unix”文件系统(例如HFS)不区分大小写,这是正确的,但它们也保留大小写。虽然不允许在同一目录中包含名为“Foo.h”和“Foo.h”的文件,但不能用“Foo.h”来引用“Foo.h”。C是否区分大小写?我认为这是一个特定于平台的东西,Unix是,Windows不是。@immibis-你是对的,考虑到我们在一台计算机上工作,而不是在另一台计算机上工作,我仍然认为这是答案;-)当涉及到语言本身的标识符时,C绝对是区分大小写的。i、 可以有两个单独的函数,分别称为Main()和Main()。但是文件名不是C标识符,在这种情况下[sic]是平台(和实现)定义的。@immibis大多数“Unix”文件系统(例如HFS)不区分大小写,这是正确的,但它们也保留大小写。虽然不允许在同一目录中包含名为“Foo.h”和“Foo.h”的文件,但您不能以“Foo.h”的名称引用“Foo.h”。