I have these files
test1.h
extern int value;
void inc_value();
int print_value();
test1.c
#include "test1.h"
int value=0;
void inc_value()
{
printf("inc value from test3.c = %d\n", value++);
}
int print_value()
{
printf(" value in test1.c = %d\n", value);
return value;
}
test3.c
# include "test1.h"
main()
{
inc_value();
}
test4.c
# include <stdio.h>
#include "test1.h"
main()
{
printf("value from test4 = %d\n", print_value());
}
I’m updating variable “value” from test3.c and trying to read it from test4.c. However test3.c is unable to update the “value” that is declared in test1.h and defined in test1.c
What point am I missing here..
This will never work.
You can’t use an external variable from two different programs and magically expect it to work. It’s just … wrong. Each program runs in its own address space, and doesn’t know anything about any other process’ address spaces. There are techniques for doing this (look up interprocess communucation), but that’s a whole different area.
The way
externworks is that it allows you to access a variable defined in a different C file within the same program.You seem to be mis-understanding at a quite fundamental level how the programs you are writing work and execute, since you expect this to work. I recommend reading up more on how C works, and also perhaps a bit on how operating systems host programs in order to run them.
One way of sharing information between programs like you describe is to store the data in a file, which is written by one program (the one that runs first) and read by the other, but that is quite tricky to get right, too.