102k views
1 vote
Consider the following 3 programs:

1
//contents of file foo.c:
static int a = 5;
int main() {
f();
return 0;
}
//contents of file bar.c:
static int a = 10;
void f() {
printf("%d\\", a);
}

2
//contents of file foo.c:
int a = 5; int main() {
f();
return 0;
}
//contents of file bar.c:
void f() { int a = 10;
printf("%d\\", a);
}

3
//contents of file foo.c:
int a = 5;
int main() {
f(); return 0;
}
//contents of file bar.c:
int a;
void main() {
printf("%d\\", a);
}

If the command "gcc foo.c bar.c" is executed, which of the above programs result in a linker error?

1 Answer

0 votes

Answer:

If the following programs are executed then Program 2 results "linker error"

Step-by-step explanation:

Because In program 1, which is in the C Programming Language they declare the integer data type variable "a" as static in both files, so the scope of the static member is in the file or method then, the output of the following Program 1 is 10.

In the Program 2, which is in the C Programming Language they declare the integer data type variable in both files with initialization of 5 and 10, so when they execute the following Program 2 then, it occurs an "linker error" because the following program cannot find the value of the integer variable a.

In the Program 3, which is in the C Programming Language they declare the integer data type variable in both files but they initialize in the file "foo.c" is 5 and not initialize in the file "bar.c", so when they execute the following Program 3 then, its output is 5.

User AeJey
by
5.1k points