0

我正在试验 stm32f4 的一些示例项目。我想用一些 c++ 代码来构建其中的一些。

如果我添加一个 cpp 文件,ide 似乎可以正确识别它。如果我将语言设置为自动(基于扩展),我的 cpp 文件将构建,其中包含一个类,非常棒。

但是我可以在它们之间建立联系吗?一切都可以编译(没有警告),但是如果我从 c 调用 cpp 函数,则链接失败(没有定义)

有没有办法从c调用cpp和从cpp调用c?

谢谢

4

1 回答 1

3

是的,这是可能的。但是,您必须明确告诉 C++ 函数是 C 函数。您可以通过如下声明来做到这一点:

extern "C"
{
   void my_function(void);
}

为了确保头文件在 C 和 C++ 下都能正常工作,它们通常写成:

#ifdef __cplusplus
extern "C"
{
#endif
   void my_function(void);
#ifdef __cplusplus
}
#endif
于 2013-05-24T13:15:58.433 回答