Google 测试:测试 C 代码时的奇怪行为

Google test: strange behaviour when testing C code

我正在尝试使用 Google 测试来测试我的 C 代码(以前从未使用过它),但看起来它认为我想测试 C++ 代码

23: error: invalid conversion from 'void*' to 'char*' [-fpermissive]
     str->data = malloc(buf_size + 1);
33: error: invalid conversion from 'void*' to 'char*' [-fpermissive]
         char *new_begin = malloc(buf_size + 1);

我的测试文件(如果我没有包含源文件而是包含 header 它在测试期间(或者甚至之前)失败

#include <gtest/gtest.h>
extern "C" {
#include "../lib/scr/c_string.c"
}

总而言之,我只是为

更改了代码
str->data = (char*)malloc(buf_size + 1);

因为它适用于 C++。值得庆幸的是,没有崩溃 :)

extern "C" 不会将包含的源代码转换为 C,它指定了一个链接约定,用于发生在您包含文件的块中的声明。

换句话说,您的 C 文件内容被复制到 C++ 源文件中,并按照 C 链接约定编译为 C++。