c - 如何在C中更新外部变量

标签 c global-variables extern

我有这些文件

test1.h

extern int value;
void inc_value();
int print_value();

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;
}

test3.c

# include "test1.h"

main()
{

inc_value();

}  

test4.c

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

main()

{
    printf("value from test4 = %d\n", print_value());
}  

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

我在这里错过了什么..

最佳答案

这永远行不通。

您不能使用来自两个不同程序 的外部变量并神奇地期望它能正常工作。只是……错了。每个程序都在自己的地址空间中运行,并且对任何其他进程的地址空间一无所知。有一些技术可以做到这一点(查找进程间通信),但那是一个完全不同的领域。

extern 的工作方式是它允许您在同一程序 中访问在不同 C 文件中定义的变量。

您似乎在相当基本的层面上误解了您正在编写的程序如何工作和执行,因为您希望它能工作。我建议阅读更多有关 C 的工作原理的信息,或许还可以阅读一些有关操作系统如何托管程序以便运行它们的信息。

像您描述的那样在程序之间共享信息的一种方法是将数据存储在一个文件中,该文件由一个程序(首先运行的程序)写入并由另一个程序读取,但这很难做到正确,也是。

关于c - 如何在C中更新外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599224/

相关文章:

java - 重构使用全局变量的类

c++ - h 文件 C++ 模板库中的静态变量。可以吗?

c++ - extern 数组出现 undefined reference 错误,但适用于 int

c# - 如何设置一个 C++ 函数以便它可以被 p/invoke 使用?

python - 从Python到C

android - 检查 C/ native 代码中的 .apk 签名

c - C 编程中哪个约定更好?

jquery - fullCalendar UNIX 时间戳转换问题与选择事件

c - Mach 寻呼机将文件加载到 mmap 文件中的内存

java - 全局 MediaPlayer 声明不起作用