相关疑难解决方法(0)

如何定义C结构:c-linkage和udt

我用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 dataconst char *警告消失了,我什么也不懂,但我不希望改变结构的定义.

c++ visual-c++

7
推荐指数
1
解决办法
521
查看次数

标签 统计

c++ ×1

visual-c++ ×1