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

Pum*_*Pie 3 c c++ scope

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

在main.C

char globalvar = 0;

int main()
{
     .....
}
Run Code Online (Sandbox Code Playgroud)

在main.h中

extern char globalvar;
Run Code Online (Sandbox Code Playgroud)

在file2.cpp中

#include "main.h"

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助,将不胜感激!

Moh*_*ain 8

main.h应该看起来像

#ifdef __cplusplus
extern "C" {
#endif
extern char globalvar;
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)

确保globalvar具有C链接.

  • @SouravGhosh是的它会起作用,但你需要在所有`.cpp`文件中执行此操作,其中包括`main.h` (3认同)
  • 好的,一如既往.一个简单的问题,我们可以在`.cpp`文件中执行`extern"C",同时包含`main.h`吗? (2认同)