Reputation: 4527
Let's say we have this source tree:
.
└── src
├── foo
│ ├── common.c
│ └── foo.c
└── bar
├── common.c
└── bar.c
And in both src/foo/common.c
and src/bar/common.c
we have different static
variables named common_var
in both files, which obviously correspond to different variables.
All files will be compiled into a similar tree in tmp/
(including tmp/foo/common.s
& tmp/bar/common.s
), later assembled into object files (including tmp/foo/common.o
& tmp/bar/common.o
), and all those object files will go into lib/libfoobar.a
which will be used by some program.
Ending with this file tree:
.
├── lib
│ └── libfoobar.a
├── src
│ ├── foo
│ │ ├── common.c
│ │ └── foo.c
│ └── bar
│ ├── common.h
│ └── bar.hpp
└── tmp
├── foo
│ ├── common.o
│ ├── common.s
│ ├── foo.o
│ └── foo.s
└── bar
├── common.o
├── common.s
├── bar.o
└── bar.s
Is it OK, or will there be compiler/linker/any problems?
Related: Static library having object files with same name (ar)
The difference here is that contents may clash.
Upvotes: 3
Views: 355
Reputation: 1777
Global static variables have internal linkage, so there is no way for them to be treated as the same even if there is no difference in names, mangled or otherwise.
There will be no conflict.
Upvotes: 2