2011-05-28 40 views

回答

5

用同样的方法,如果你声明C++功能extern "C"Ç将能够与它链接。

6

不是。您可以在C++中编写“C兼容”函数,即在任何类或名称空间之外,其原型不使用类或引用的函数。如果声明为extern "C"那么你可以从C中调用这样的函数。然后函数可以继续使用任何C++特性对它有用。

+0

可以声明extern“C”的C++函数在其函数体中使用任何其他类吗? – 2011-05-28 09:56:54

+0

@编译风扇,是的,它可以:) – vines 2011-05-28 10:05:23

3

在C++中的函数中,有两种类型让我想起来:简单的独立函数和成员函数,它们是类的一部分。没有办法直接在C中使用第二种类型,因为它没有“对象”的概念。记住成员函数有一个隐含的“this”作为隐藏的第一个参数。

但是,如果使用extern“C”声明作为函数原型的一部分对其进行装饰,则可以使用C语言中的第一种类型的函数。这需要告诉C++编译器在编译源代码时不要“破坏”函数名称。

+0

如果普通旧式独立函数在其函数体中使用其他类,那么它仍然可以直接在c中使用吗? – 2011-05-28 09:59:42

+0

@编译风扇是可能的,但前提是您在C++模式下编译该函数,然后将其作为库或目标文件链接到C代码中。这里关键的观察是你必须保持C++特定的代码在这个边界后面。 – greatwolf 2011-05-28 10:02:37

+0

@编译风扇 - 可以从C调用C++代码,但函数使用C++ – Mark 2011-05-28 10:03:05