假设我们有这个源代码树:
.
└── src
├── foo
│ ├── common.c
│ └── foo.c
└── bar
├── common.c
└── bar.c
在src/foo/common.c
和src/bar/common.c
中,两个文件中都有名为static
的不同common_var
变量,它们显然对应于不同的变量。
所有文件都将被编译成tmp/
(包括tmp/foo/common.s
和tmp/bar/common.s
中的类似树,随后被组装成目标文件(包括tmp/foo/common.o
和{{1} }),所有这些目标文件都将进入tmp/bar/common.o
,该文件将被某些程序使用。
以该文件树结尾:
lib/libfoobar.a
可以,还是编译器/链接器/有任何问题?
相关:Static library having object files with same name (ar)
这里的区别是内容可能会冲突。
答案 0 :(得分:2)
全局静态变量具有内部链接,因此即使名称没有任何差异(无论是否乱码),也无法将它们视为相同。
不会有冲突。