Norman Goldstein
2020-02-16 00:51:14 UTC
LD version:
  GNU ld version 2.31.1-37.fc30
Platform:
  Linux 5.4.17-100.fc30.x86_64 #1 SMP   x86_64 x86_64 x86_64 GNU/Linux
Compile/Link command:
   gcc tlink.cpp tlink2.cpp -o tlink -lstdc++
The programs compiles and links without warning or error, but resolves
/extern int foo/ with /double foo/. The result of running the program
is, of course, garbage:
foo= -858993459
The program contains only 1 definition for foo (the extern statement is
a declaration), so the program is not violating the One Definition Rule.
Thank you.
  GNU ld version 2.31.1-37.fc30
Platform:
  Linux 5.4.17-100.fc30.x86_64 #1 SMP   x86_64 x86_64 x86_64 GNU/Linux
Compile/Link command:
   gcc tlink.cpp tlink2.cpp -o tlink -lstdc++
The programs compiles and links without warning or error, but resolves
/extern int foo/ with /double foo/. The result of running the program
is, of course, garbage:
foo= -858993459
The program contains only 1 definition for foo (the extern statement is
a declaration), so the program is not violating the One Definition Rule.
Thank you.