Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 21994

Variably modified at file scope [closed]

$
0
0

How can I fix this error? It is caused by initializing my arrays pgAccess, pgArray, and pgRequest to variable sizes that are all global variables used throughout the program. I know there may be some undeclared variables in some of the methods but I would like to focus on the problem with these arrays. I'm working with virtual memory algorithms here.

int flag = 0, var, currFrame = 0, numFault, currRequest, request;int numPages, numFrames, numRequest, fc =0, go =0, c =0;int pgAccess[numRequest], pgArray[numPages], pgRequest[numRequest];void runningMessage(int, int, int);void fifo();void lru();void opt();void runningMessage(int pg, int frame, int msg){        if(msg == 1)        {                printf("Page %d already in Frame %d\n",pg, frame);        }        if(msg == 2)        {                printf("Page %d loaded into Frame %d\n",pg, frame);        }        if(msg == 3)        {                printf("Page %d unloaded from Fram %d\n",pg, frame);        }}int main(int argc, char *argv[]){        FILE *fp;        fp = fopen(argv[1], "r");        int x =0;        fscanf(fp, "%d %d %d", &numPages, &numFrames, &numRequest);        while(!feof(fp))        {                fscanf(fp, "%d", &pgAccess[x]);                x++;        }        fclose(fp);        printf("Algorithm: %s\n\n", argv[2]);        if(argv[2] == "FIFO")        {                fifo();        }        if(argv[2] == "LRU")        {                lru();        }        if(argv[3] == "OPT")        {                opt();        }}void fifo(){        int i, x;        for(i = 0; i < numFrames; i++)        {                pgArray[i] = -1;        }        while(x < numRequest)        {                flag =0;                var = pgAccess[x];                for(i = 0; i < numFrames; i++)                {                        if(var == pgArray[i])                        {                                flag = 1;                                x++;                                runningMessage(pgArray[i], i, 1);                                break;                        }                }                if(flag == 0)                {                        if(currFrame < numFrames)                        {                                pgArray[currFrame] = pgAccess[x];                                runningMessage(pgAccess[x], currFrame, 2);                                currFrame++;                                x++;                                numFault++;                        }                        else if( y < numFrames)                        {                                runningMessage(pgArray[y], y, 3);                                pgArray[y] = pgAccess[x];                                runningMessage(pgAccess[x], y, 2);                                x++;                                y++;                                numFault++;                                else                                {                                        y =0;                                }                        }                }        }        printf(" %d Page Faults\n\n", numFault);}void lru(){        int i, x, y, a, b, j;        y = numFrames;        for(i = 0; i < y; i++)        {                pgRequest[i] = 0;                pgArray[i] = -1;        }        for(i = 0; i < numRequest; i++)        {                flag = 0;                a = pgAccess[i];                for(j = 0; j < y; j++)                {                        if(a == pgArray[j])                        {                                flag = 1;                                pgRequest[j] = i;                                runningMessage(pgArray[j], j, 1);                                break;                        }                }                if((flag == 0) && (b < y))                {                        fc++;                        pgArray[b] = a;                        pgRequest[b] = i;                        runningMessage(pgArray[b], b, 2);                        b++;                }                else if((flag == 0) && (b == y))                {                        fc++;                        minRequest = pgRequest[0];                        for(currRequest = 0; currRequest < y; currRequest++)                        {                                if(pgRequest[currRequest] < minRequest)                                {                                        minRequest = pgRequest[currRequest];                                        request = currRequest;                                }                        }                        pgArray[request] = a;                        pgRequest[request] = i;                        runningMessage(pgAccess[request], request, 3);                        runningMessage(pgArray[request], request, 2);                        request =0;                }        }        printf(" %d Page Faults\n\n", fc);}void opt(){        int i, x, y, a;        for(i = 0; i < numFrames; i++)        {                pgRequest[i] = 0;                pgArray[i] = -1;        }        for(i = 0; i < numRequest; i++)        {                flag = 0;                a = pgAccess[i];                for(y = 0; y < numFrames, y++)                {                        if(a == pgArray[y])                        {                                flag = 1;                                runningMessage(pgArray[y], y, 1);                                break;                        }                }                if((flag == 0) && (x < numFrames))                {                        fc++;                        pgArray[x] = a;                        runningMessage(pgArray[x], x, 2);                        x++;                }                else if((flag == 0) && (x == numFrames))                {                        fc++;                        for(go = 0; go < numFrames; go++)                        {                                pgRequest[go] = 0;                        }                        for(currRequest = 0; currRequest < numFrames; currRequest++)                        {                                c = 0;                                for(currFrame = i + 1; currFrame < numRequest; currFrame++);                                {                                        if(pgArray[currRequest] == pgAccess[currFrame])                                        {                                                if(pgRequest[currRequest] == 0)                                                {                                                        pgRequest[currRequest] = currFrame;                                                        c = 1;                                                }                                        }                                }                                if(c != 1)                                {                                        pgRequest[currRequest] = numRequest + 1;                                }                        }                        request = 0;                        maxRequest = pgRequest[0];                        for(go = 0; go < numFrames; go++)                        {                                if(pgRequest[go] > maxRequest)                                {                                        maxRequest = pgRequest[go];                                        runningMessage(pgArray[go], go, 3);                                        request = go;                                }                        }                        pgArray[request] = a;                        runningMessage(pgArray[request], request, 2);                }        }        printf(" %d Page Faults\n\n", fc);}

Viewing all articles
Browse latest Browse all 21994

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>