C中外部变量的动态值

C中外部变量的动态值,c,global,extern,multifile,C,Global,Extern,Multifile,我有一个文件。h: extern int global_value; 和文件1.c: #include "file.h" int global_value = 0; main() { while(1) global_value++; } 和文件2.c: #include "file.h" main() { while(1) printf("%d", global_value); } 我的问题是显示器上的值总是0 问题在哪里? 任何人都可以帮助我,谢谢。全

我有一个文件。h:

extern int global_value;
和文件1.c:

#include "file.h"
int global_value = 0;
main()
{
   while(1)
      global_value++;
}
和文件2.c:

#include "file.h"
main()
{
   while(1)
      printf("%d", global_value);
}
我的问题是显示器上的值总是0 问题在哪里?
任何人都可以帮助我,谢谢。

全局变量的作用域有限,不能超出当前可执行文件的范围。

好的,我找到了,我使用IPC共享内存,它工作正常。

您有两个主要功能。你在运行两个不同的程序吗?顺便说一下,它必须是
int main()
;如果你的编译器没有抱怨,扔掉它,得到一个像样的免费版本。请不要在堆栈溢出上发布实时代码示例。相反,从头开始重新编写一个自包含且简化的代码示例,它完全再现了您想要询问的问题。其他一切都太宽泛了。在堆栈溢出的情况下,还可以阻止调试请求和个人辅导请求。你所需要做的就是制定一个具体的编程问题,那就是你的入门卡。你错误地输入了“gloabal_值”,也许“file2.h”应该是“file2.c”?如果是这样,请编辑问题并解决此问题(可能还有其他问题)?查找共享内存、IPC、命名管道、套接字或内存映射文件或…您不能仅通过在两个程序中声明变量就在两个可执行文件之间共享变量。可能该值可以存储在一个文件中,以便两个程序都可以访问它;或者(更高级的)这两个可执行文件可能有一个共享的内存空间。在这两种情况下,可能需要使用某种信号量来保护共享资源,以避免数据损坏。