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