Consider the following example:
void edit(int num);
void edit(int num)
data.value = num;
Assuming file1.c and file2.c are linked into a single executable along with header.c, they will be referencing the same variable. So if you call
edit with a value of 99 from a function in file1.c, a subsequent call to
get from a function in file2.c will return 99.
The only way you could get different results is if you were to pass an instance of
My_Struct to these functions, so each calling function could use a different instance.
If on the other hand file1.c and file2.c are each linked into separate executables, then each one (each running instance, actually) will have its own copy of