有没有办法在对象模块中覆盖静态范围的函数?
如果我从这样的东西开始,带有全局符号"foo"的模块是一个调用本地符号"bar"的函数,它调用本地符号"baz"
[scameron@localhost ~]$ cat foo.c
#include <stdio.h>
static void baz(void)
{
printf("baz\n");
}
static void bar(void)
{
printf("bar\n");
baz();
}
void foo(void)
{
printf("foo\n");
bar();
}
[scameron@localhost ~]$ gcc -g -c foo.c
[scameron@localhost ~]$ objdump -x foo.o | egrep 'foo|bar|baz'
foo.o: file format elf32-i386
foo.o
00000000 l df *ABS* 00000000 foo.c
00000000 l F .text 00000014 baz
00000014 l F .text 00000019 bar
0000002d g F .text 00000019 foo
Run Code Online (Sandbox Code Playgroud)
它有一个全球性的"foo"和两个当地人"bar"和"baz".
假设我想编写一些运动条和baz的单元测试,我可以这样做:
[scameron@localhost ~]$ cat barbaz
bar
baz
[scameron@localhost ~]$ …Run Code Online (Sandbox Code Playgroud)