如何更新C中的extern变量

mar*_*arc 1 c global-variables extern

我有这些文件

test1.h

extern int value;
void inc_value();
int print_value();
Run Code Online (Sandbox Code Playgroud)

test1.c

#include "test1.h"

int value=0;
void inc_value() 
{

printf("inc value from test3.c = %d\n", value++); 
}

int print_value() 
{

    printf(" value in test1.c  = %d\n", value);
    return value;
}
Run Code Online (Sandbox Code Playgroud)

test3.c

# include "test1.h"

main()
{

inc_value();

}  
Run Code Online (Sandbox Code Playgroud)

test4.c

# include <stdio.h>
#include "test1.h"

main()

{
    printf("value from test4 = %d\n", print_value());
}  
Run Code Online (Sandbox Code Playgroud)

我正在从test3.c更新变量"value"并尝试从test4.c中读取它.但是test3.c无法更新test1.h中声明的并在test1.c中定义的"value"

我在这里错过了什么...

unw*_*ind 6

这永远不会奏效.

你不能使用来自两个不同程序的外部变量,并且神奇地期望它能够工作.这只是......错了.每个程序都在自己的地址空间中运行,并且不知道任何其他进程的地址空间.有这样做的技术(查找进程间通信),但这是一个完全不同的领域.

方法extern是允许您访问在同一程序中的不同C文件中定义的变量.

你似乎在一个非常基础的层面上错误地理解你正在编写的程序是如何工作和执行的,因为你期望它能够工作.我建议阅读有关C如何工作的更多内容,也可以了解操作系统如何托管程序以运行它们.

在您描述的程序之间共享信息的一种方法是将数据存储在一个文件中,该文件由一个程序(首先运行的程序)编写并由另一个程序读取,但这也是非常棘手的.

  • @suzanne是的,您需要一些称为IPC,进程间通信的东西.您可能应该尝试寻找其他解决方案,因为IPC远远超出您当前的专业水平. (2认同)