c++ - 在 C 和 C++ 文件之间共享一个全局变量

标签 c++ c scope

我有两个文件。一个是 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++ 文件无法识别它。

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

如有任何帮助,我们将不胜感激!

最佳答案

你的main.h应该是这样的

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

确保 globalvar 具有 C 链接。

关于c++ - 在 C 和 C++ 文件之间共享一个全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28207901/

相关文章:

c - `typedef` 和 `struct` 在 C 函数标准内吗?

javascript - 从函数外部访问局部变量

c++ - 不同类如何操作一个函数一个

c++ - 如何在 C 预处理器中可靠地检测 Mac OS X、iOS、Linux、Windows?

c++ - 无法从 'std::vector<_Ty>' 转换为 'std::vector<_Ty> &

c - 文件存在时 fopen 失败

c++ - IEEE Std 754 Floating-Point : let t := a - b, 标准是否保证 a == b + t?

c++ - 如何使用 L(或不使用)在变量中传递 unicode 字符串

c - 打印出两个输入是否是彼此的字谜

ruby-on-rails - rails 3 : Scope on an optional has_one association