In this problem, let REF(x.i) → DEF(x.k) denote that the linker willassociate an arbitrary reference to symbol x in module i to thedefinition of x in module k . For each example below, use thisnotation to indicate how the linker would resolve references to themultiply-defined symbol in each module. If there is a link-time error(rule 1), write " ERROR ". If the linker arbitrarily chooses one of thedefinitions (rule 3), write " UNKNOWN ".A./* Module 1 */ /* Module 2 */int main() static int main=1[{ int p2()} {}(a) REF(main.1) → DEF(_____._____)(b) REF(main.2) → DEF(_____._____)B./* Module 1 */ /* Module 2 */int x; double x;void main() int p2(){ {} }(a) REF(x.1) → DEF(_____._____)(b) REF(x.2) → DEF(_____._____)C./* Module 1 */ /* Module 2 */int x=1; double x=1.0;void main() int p2(){ {} }(a) REF(x.1) → DEF(_____._____)(b) REF(x.2) → DEF(_____._____)
In this problem, let REF(x.i) → DEF(x.k) denote that the linker will
associate an arbitrary reference to symbol x in module i to the
definition of x in module k . For each example below, use this
notation to indicate how the linker would resolve references to the
multiply-defined symbol in each module. If there is a link-time error
(rule 1), write " ERROR ". If the linker arbitrarily chooses one of the
definitions (rule 3), write " UNKNOWN ".
A.
/* Module 1 */ /* Module 2 */
int main() static int main=1[
{ int p2()
} {
}
(a) REF(main.1) → DEF(_____._____)
(b) REF(main.2) → DEF(_____._____)
B.
/* Module 1 */ /* Module 2 */
int x; double x;
void main() int p2()
{ {
} }
(a) REF(x.1) → DEF(_____._____)
(b) REF(x.2) → DEF(_____._____)
C.
/* Module 1 */ /* Module 2 */
int x=1; double x=1.0;
void main() int p2()
{ {
} }
(a) REF(x.1) → DEF(_____._____)
(b) REF(x.2) → DEF(_____._____)
Trending now
This is a popular solution!
Step by step
Solved in 3 steps