Create a project consisting of several files. Here are three files:
/* --- fileA.c --- */ int x = 10;
/* --- fileB.c --- */
int x;
static int bar(int val)
{
printf(" static bar.\n");
return 2*val;
}
void foo()
{
printf(" entering foo.\n");
x = bar(x);
printf(" exiting foo.\n");
}
/* --- fileC.c --- */
#include <stdio.h>
void foo();
int x;
void bar()
{
printf(" entering extern bar x: %d\n", x);
x += 10;
printf(" exiting extern bar x: %d\n", x);
}
main()
{
printf("entering main x: %d\n", x );
bar();
foo();
printf("exiting main x: %d\n", x );
}
Remember that function names are identifiers, so the rules for the linkage of identifiers applies to them.
Question:
What does the project write? (Hint: pay attention to the static in fileB.c).