我需要这样做是因为我应该将此功能存根用于单元测试。
我正在使用gcc版本5.4.0。
对于glibc中存在的许多其他功能(如memcpy),我只是在.c文件中编写了实现,然后使用了该实现而不是原始的实现,但是在strdup和某些其他功能的情况下,我得到了像这样的编译错误:
error: expected identifier or ‘(’ before ‘__extension__’
char* strdup (const char *__s)
我知道这是因为我试图使用string.h中已经存在的函数名称,尽管它也可以与它们中的其他一些函数一起使用。我想知道是否有可能绕过这个问题。
答案 0 :(得分:4)
在您的情况下,看起来原始strdup
是一个预处理器宏,而不是实际的函数。您可以尝试摆脱它:
#undef strdup
char *strdup(const char *s) {
// your code goes here
}