c - 是否可以用我自己的 <string.h> 覆盖 strdup?

标签 c gcc googletest glibc

我需要这样做,因为我应该将此函数 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/

相关文章:

linker-errors - 制作 GTest 时出错

c++ - 当返回指向本地数组的指针时,为什么它总是相同的值?

c++ - 对 TR1 使用 boost 时,boost 数学特殊函数编译错误

c++ - 为什么是 'make test' 和 "./test/Test"

unit-testing - Google Test 中的自定义 EXPECT_NEAR 宏

c - gcc 和 g++ 编译器创建的 C 程序可执行文件之间的性能差异

c - 这到底是怎么编译成 4kb 的?

c - 我的 C 程序出现段错误 11

c - 如何比较二维字符串数组元素以查找重复元素?

C++ 二进制识别( list )