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



我正在尝试使用谷歌测试来测试我的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);

我的测试文件(如果不是包含源文件,而是包含头文件,则在测试期间(甚至可能之前(失败

#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++。

相关内容

  • 没有找到相关文章

最新更新