假设我在两个不同的文件中定义了两个静态变量(具有相同的名称),这些变量将存储在bss部分中。
URL('static', 'images/some_pic.png')
但是如何区分它们在运行时属于哪个文件。
我在这里找到了几个主题,但没有回答我的问题 -
答案 0 :(得分:2)
运行时不需要名称。该名称仅对您和C编译器有用。 C编译器知道它所属的文件,它所定义的文件。这有足够的信息。
两个变量都以各自的名称存储在.bss部分中,但存储在不同的内存位置。这就是他们的区别。
您可以使用objdump
$ cat foo1.c
static int foo = 1;
$ cat foo2.c
static int foo = 2;
$ cat main.c
int main(void) { return 0; }
$ gcc -g -O0 -o foo foo1.c foo2.c main.c
$ objdump -d -j .data foo
test: file format elf64-x86-64
Disassembly of section .data:
00000000006008a8 <foo>:
6008a8: 01 00 00 00 ....
00000000006008ac <foo>:
6008ac: 02 00 00 00 ....