我遇到了代码意大利面条,我需要在其中进行流量控制,即一次发送一个数据。我如何使用全局变量来解决这个问题?如果全局变量不起作用,访问和修改可能在不同类中的多个函数中的变量的方法是什么
我尝试了以下操作(我正在粘贴部分代码),但它给了我无法解决的 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
。compile
与link
定义
全局变量
// 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/