我正在尝试stm32f4的一些示例项目。我想用一些c ++代码构建其中一些。
如果我添加一个cpp文件,则ide似乎正确识别它。如果我将语言设置为auto(基于扩展名),我的cpp文件将构建,其中包含一个类,很棒。
但我可以在它们之间连接吗?所有东西都编译(没有警告),但如果我从c调用cpp函数(无定义),则链接失败
有没有办法从cpp c调用c和c?
由于
答案 0 :(得分:3)
是的,这是可能的。但是,您必须明确告诉C ++函数是C函数。您可以通过以下方式声明:
extern "C"
{
void my_function(void);
}
为了确保头文件在C和C ++下都能正常工作,它们通常写成:
#ifdef __cplusplus
extern "C"
{
#endif
void my_function(void);
#ifdef __cplusplus
}
#endif