什么时候是'extern C”在Windows中的c ++中需要什么?
我们知道我们可以直接在c ++中使用c函数,何时需要ѭ0?
没有找到相关结果
已邀请:
5 个回复
橙绥
递劝臼类洪
函数必须由
代码而不是
代码调用时,这是必要的。 基本上,当您希望
库向后兼容时。
茶鬼失形
有两种不同的用途。一种是在C ++中定义一个你应该能够从C调用的函数。即,你用C ++编写代码,但它需要与C代码接口。在这种情况下,您将函数定义为
:
执行此操作时,这些函数的接口必须遵循与C中相同的规则(例如,您不能重载函数或使用任何参数的默认值)。 另一个(更常见的)情况是你有用C编写的代码,你希望能够从C ++调用。在这种情况下,函数定义与以前完全相同,但函数需要声明/原型为
。在典型的情况下,您希望在C或C ++文件中使用可以是
d的单个标头,因此结构如下所示:
因此,C ++编译器将看到由
块包围的函数声明(和
s等),而C编译器将看到原型,而不是被它无法识别的东西包围。 在第一种情况下(C ++函数可以从C调用),你通常会以相同的方式构造标题,所以如果需要你也可以用C ++调用这些函数(但是在接口上,你仍然会丢失C ++的所有额外功能)函数重载)。
届甸衬丝蚕
至
不幸的是,C不支持这一点。编译后,所有函数名称保持不变。因此,要从c调用c ++函数,您必须知道修改后的确切名称,并且我认为它很难从编译器到另一个编译器。 要解决这个问题并且能够从c调用c ++函数并阻止编译器更改你必须使用这个关键字的名称
而已 !!!
硕歌沙