Can anybody help me on this problem:

I am writing a simulation program with several files. In a header file, I declared e global variable in hope that all other files could use it. so i put down: #define size 100 int memory; in the header file memory.h. However, there are two seperate C files using that variable: simulation.c and processor.c. When I run the program, simulation.c did load all the stuff in the variable memory; but when the program reaches to functions from processor.c, all the loaded stuff in variable memory lost, as if the function in processor.c actually reinitialised the variable. I checked everywhere in processor.c, don't see anywhere the function can initialise the variable. I also tryed to add 'extern' in front of the definition, but end up with compiling error:
Error: Unresolved external '_memory' referenced from C:\DOCUMENTS AND SETTINGS\RS1249\CBPROJECT\SIMULATOR\WINDOWS\DEBUG_BUILD\SIMULATOR.OBJ

I don't know what to do now. Please can somebody help me on this. Thanks

The easiest way to get a truly global variable (accessible across multiple translation units) is to declare it in the common header, and define it in a special translation unit:

/* header.h */
#include "defs.h"

extern int memory[SIZE];
/* header.c */
#include "header.h"

int memory[SIZE];

Now you can include header.h in your other source files, compile and link header.c along with the rest of your project, and everyone can use the memory array.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.