我需要这样做,因为我应该将此函数 stub 以进行单元测试。
我使用的是 gcc 5.4.0 版。
对于 glibc 中存在的许多其他函数,比如 memcpy,我只是在我的 .c 文件中编写了实现,然后使用这个实现代替了原来的实现,但是对于 strdup 和其他一些函数,我得到了一个像这样的编译错误:
error: expected identifier or ‘(’ before ‘__extension__’
char* strdup (const char *__s)
我知道这是因为我正在尝试使用一个已经存在于 string.h 中的函数名称,尽管它也可以与它们中的其他一些函数一起使用。我想知道是否有可能以某种方式绕过它。
最佳答案
在您的情况下,原始 strdup
看起来像是预处理器宏,而不是实际函数。您可以尝试摆脱它:
#undef strdup
char *strdup(const char *s) {
// your code goes here
}
关于c - 是否可以用我自己的 <string.h> 覆盖 strdup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233563/