我用C-ABI接口用X语言写的.我想从我的c ++程序中使用这个C-ABI.
我在main.cpp中写道:
extern "C" {
struct Foo {
const char * const data;
unsigned len;
};
struct Foo f(void);
}
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
并得到编译器的警告(visual c ++/15.7.5/windows 7/32bit):
(7):警告C4190:'f'指定了C-linkage,但返回与C不兼容的UDT'Foo'
(7):注意:见'Foo'的声明
这里有godbolt链接:https://godbolt.org/g/ztx1kf
我在C++代码链接中读取错误:警告C4190:type指定了C-linkage,但是返回与C不兼容的UDT,但在我的情况下,我的POD结构中根本没有"c ++代码".
我怎样才能说服编译器这不是C++ struct Foo,而是C struct Foo?
我尝试将其移动到单独的头文件(.h),但这没有任何改变.
如果我更换const char * const data与const char *警告消失了,我什么也不懂,但我不希望改变结构的定义.