![]() |
1
6
不,C不能使用C中不可用的C++特性。然而,C代码可以间接使用C++代码。例如,可以使用C++实现C函数,并且可以在接口中使用不透明类型,以便使用签名。
对于不透明类型,您将拥有以下内容:
然后,您可以秘密地(在C++实现中)施以STD::Vector*Value*。 |
![]() |
2
6
从技术上讲,您可以从C中调用任何东西,只要给定了C可见的函数名(在ABI级别忽略原型等)。当然,如果C不能以预期的方式生成参数,就不能期望得到正确的结果。通常显而易见的解决方案是将接口简化到C级。
关于C可视性:函数名不能与任何其他C可视函数共享。如果你希望C++函数可以从C调用,这可能是原型的一个很好的例子:
记住,在每种情况下,C++都会选择具有最佳匹配签名的定义到调用站点,C将采取任何它可以(它总是一个具有匹配名称的单个函数)。
您将发现通过组合对C隐藏C++ISM很有用
|
![]() |
3
5
看到了吗
this FAQ
. 基本上,你不能调用C++方法(成员函数),但是如果用ExtC C声明的话,你可以调用独立的函数。
|
![]() |
4
0
我前一段时间读过一些关于这方面的文章,iirc你可以使用c++代码/结构来编译。但是静态初始化有一点,如果我理解正确的话,你应该用c++写你的主函数来保证这个s.i.完成了,c.main没有。 |
![]() |
5
0
如果您打算提供相同的功能,C和C++两个,我会尝试提供两个入口点,使您可以适应一个到另一个。注意,虽然您可以解决一个可以从C和C++中使用的接口,但在大多数情况下,C接口对于C++使用来说不是理想的。
|
![]() |
6
0
如果您有可能修改您调用的代码,我建议将函数从返回向量改为:
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |