Tag: name mangling

为什么C函数不能被名字打乱?

我最近接受了一个采访,有一个问题是在C ++代码中使用了extern "C" 。 我回答说在C ++代码中使用C函数是因为C不使用名称修饰。 有人问我为什么C不使用名称修改,老实说我无法回答。 我明白,当C ++编译器编译函数时,会给函数一个特殊的名字,主要是因为我们可以在C ++中重载相同名称的函数,而这些函数必须在编译时parsing。 在C中,函数的名称将保持不变,或者在_之前。 我的查询是:允许C ++编译器破坏C函数还有什么错? 我会假定编译器赋予它们的名称并不重要。 我们在C和C ++中以相同的方式调用函数。

在C ++源代码中,extern“C”有什么作用?

究竟把extern "C"放到C ++代码中呢? 例如: extern "C" { void foo(); }