c++ - 全局变量可以在C++的各个类中访问和修改吗

标签 c++ global-variables extern

我遇到了代码意大利面条,我需要在其中进行流量控制,即一次发送一个数据。我如何使用全局变量来解决这个问题?如果全局变量不起作用,访问和修改可能在不同类中的多个函数中的变量的方法是什么

我尝试了以下操作(我正在粘贴部分代码),但它给了我无法解决的 ld 错误。我想问问什么可能是解决这个问题的最好和最干净的方法。

file1.h

int data_received; //global variable
class abc
{
.
.
.
public:
  void send_data(..)
.
.
.
};

file1.c

void send_data()
{
  while(!end_of_file)
  {
    read_line;
    data_received = 0;
    transmit_data(line);
    while(data_received == 0)
      cout<<"waiting for response before proceeding\n";

  }

}

file2.c

//data receive class

void transmit_data()
{
 ....
 ....
 ....
//data sent upstream
 data_received = 1;
}

我在 stackoverflow 上搜索了很多帖子,但没有明确的答案。有些人建议使用外部变量,但没有在多个类函数中修改外部变量的明确示例。

最佳答案

请详细了解

  • Declare 与 C 和 C++ 中的 Define
  • compilelink

定义全局变量

// file1.cpp
int data_received; 

extern 告诉编译器在链接器时可以找到 data_received

// file2.cpp
extern int data_received;

此外,static 可以限制my_global_var 只能在定义它的文件中使用。例子

// file3.cpp
static int my_global_var = 1;

linker 会发生错误

// file4.cpp
extern int my_global_var;

关于c++ - 全局变量可以在C++的各个类中访问和修改吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44711996/

相关文章:

c++ - 尝试使用全局变量时使用 Xcode C++ 时出错

c - 静态内联、外部内联和普通内联函数有什么区别?

c++ 全局变量未在此范围内声明

c++ - 当 sizeof(long) == sizeof(int) 时 long* 和 int* 之间的转换

c++ - 如何在 QTableView 中使用就地 QComboBox

c++ - 实现具有多重继承的纯虚函数

objective-c - OBJC_EXTERN : what's the purpose?

c++ - 如何在 3D 点上绘制文本?

php - 在 PHP 中,将变量声明为函数内部的全局变量或将变量作为参数传递给函数有什么区别?

javascript - 是否可以从外部 JavaScript 内部更改全局变量?