gpt4 book ai didi

c - 如何替换C标准库函数?

转载 作者:太空狗 更新时间:2023-10-29 16:51:10 26 4
gpt4 key购买 nike

我们如何用我们自己实现的函数替换 C 标准库函数?

例如,如何将 strcpy() 替换为我自己的 strcpy() 实现,并让所有调用链接到新的实现?

最佳答案

至少对于 GCC 和 glibc,标准 C 函数的符号因此您可以覆盖它们。例如,

strcpy.c:

#include <string.h>
#include <stdio.h>

char * strcpy(char *dst, const char *src)
{
char *d = dst;
while (*src) {
*d = *src;
d++;
src++;
}
printf("Called my strcpy()\n");

return (dst);
}

int main(void)
{
char foo[10];
strcpy(foo, "hello");

puts(foo);

return 0;
}

然后像这样构建它:

gcc -fno-builtin -o strcpy strcpy.c

然后:

$ ./strcpy 
Called my strcpy()
hello

注意这里-fno-builtin的重要性。如果您不使用它,GCC 将替换对内置函数的 strcpy() 调用,GCC 有一个编号。

我不确定这是否适用于其他编译器/平台。

关于c - 如何替换C标准库函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com