2016-04-06 16 views
0

Also immer wenn ich versuche, mein Makefile auf meinem Server auszuführen, gibt es mir immer den Fehler ist "Memory.c: 9 Fehler: erwartet ') "vor" * Token. Aber wenn ich versuche, es auf meinem eigenen Computer zu laufen, funktioniert es ganz gut. Ich habe versucht herauszufinden, was falsch ist, aber nicht finden kann.erwartet ')' vor '*' Token, kann scheinbar keinen Fehler finden

I ' habe die drei Dateien angehängt, die in diesem Teil meines Programms verwendet werden. Memory.c, MEMORY.H und ProcessInput.h.

Dies ist 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; 
    } 
} 

und das ist 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); 

die nur von ProcessInput.h verwendet Sache ist die Prozessstruktur in ProcessInput.h definiert

Diese ProcessInput.h ist

// 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); 

Ich bin nicht sicher, warum es mir den Fehler gibt. Ich weiß nicht, wo ich eine fehlende rechte Zahnspange anbringen soll. Jeder Rat wird sehr geschätzt!

edit: Wie informiert, sind dies die folgenden Fragen, die ich angeschaut habe, aber nicht nutzen.

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/

dankt allen für die Hilfe!

+0

Nur hinzufügen, ich habe versucht, durch andere Fragen auf Stack Overflow von Menschen, die die gleichen Probleme erleben, aber die bereitgestellten Lösung für jede Frage ist bereits von mir getan. – Simon

+0

Sie sollten Ihre Frage so bearbeiten, dass sie eine Liste der gefundenen Fragen enthält, um zu verhindern, dass sie als Duplikat geschlossen wird. – skrrgwasme

+0

Ist auf dem Server Linux und auf Ihrem Computer Windows ausgeführt? – immibis

Antwort

1

#include "memory.h" unterscheidet sich #include "Memory.h" (d.h. C Gross- und Kleinschreibung)

Wenn man versucht, anstelle von #include "MyFile.h"#include "myfile.h" der Fehler offensichtlicher sein kann. In diesem Fall findet der Compiler einfach das System memory.h.

+0

Ist C Groß- und Kleinschreibung? Ich dachte, es wäre eine Plattform-spezifische Sache, und Unixes sind, und Windows ist nicht. – immibis

+0

@immibis - du hast recht http://stackoverflow.com/questions/1951951/when-include-header-files-is-the-path-case-sensitive Ich denke immer noch, dass dies die Antwort ist, wenn man bedenkt, dass wir arbeiten auf einem Computer und nicht auf einem anderen ;-) – John3136

+2

C ist auf jeden Fall Groß-und Kleinschreibung, wenn es um Bezeichner in der Sprache selbst geht. d. h. Sie können zwei separate Funktionen namens Main() und Main() haben. Aber Dateinamen sind nicht C-Kennungen und in diesem Fall ist es Plattform (und Implementierung) definiert. – Deltics

1

<memory.h> ist ein Header aus der C-Bibliothek der Vor-Standard-Ära. Es ist durchaus möglich, dass Ihre Standardbibliothek es immer noch bereitstellt, und der Compiler nimmt das anstelle Ihres.

Versuchen Sie, Ihre Header-Datei umbenennen und sehen, ob es etwas ändert.

Verwandte Themen