在C和C++文件之间共享全局变量

4

我有两个文件,一个是C文件,另一个是C++文件。

在main.C文件中:

char globalvar = 0;

int main()
{
     .....
}

在main.h中。
extern char globalvar;

在file2.cpp文件中

#include "main.h"

int function()
{
    globalvar = 5;  //ERROR, globalvar is undefined.
    ...

}

基本上,我的项目包含C和C++两部分。在main.c文件中声明了一个全局变量。我已经成功地在所有的C文件中访问了这个全局变量,但是C++文件无法识别它。

有没有人对发生的事情有任何想法?

非常感谢您的帮助!


我不是c++方面的专家,但你尝试过使用 extern C 并将C头文件包含到cpp代码中吗? - Sourav Ghosh
extern "C" char globalvar; 在 https://dev59.com/EnXYa4cB1Zd3GeqP9rxP 上被提到。虽然我不太了解cpp。 - Shakil Ahamed
1个回答

10

您的 main.h 应该长这样

#ifdef __cplusplus
extern "C" {
#endif
extern char globalvar;
#ifdef __cplusplus
}
#endif

为了确保 globalvar 具有 C 链接。


2
一如既往,做得很好。一个简单的问题,我们可以在包含main.h.cpp文件中使用extern "C"吗? - Sourav Ghosh
3
可以,但需要在包含main.h的所有.cpp文件中进行此操作。 - Mohit Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接