[英]How can I access and modify a global variable across multiple files?
就像標題所說的,我想創建一個系統,其中兩個程序可以訪問和修改相同的全局變量。
我創建了一個目錄,其中包含文件1.c,2.c,foo.c和foo.h。
1.C:
#include <unistd.h>
#include <stdio.h>
#include "foo.h"
int main(){
printf("foo is %d\n", foo);
sleep(7);
printf("now foo is %d\n", foo);
}
2.C:
#include <stdio.h>
#include "foo.h"
int main(){
increment();
printf("2.c is incrementing foo. foo is now %d\n", foo);
}
foo.h中:
#ifndef FOO_H
#define FOO_H
extern int foo;
void increment(void);
#endif
foo.c的:
#include <stdlib.h>
#include "foo.h"
int foo = 5;
void increment(){
++foo;
}
我使用以下編譯命令進行編譯:
gcc -c foo.c
gcc 1.c foo.o -o 1.out
gcc 2.c foo.o -o 2.out
然后我用./1.out
./2.out
運行它,確保2.out在sleep()在1.out中完成之前運行。 結果如下:
./1.out
foo is 5
now foo is 5
./2.out
2.c is incrementing foo. foo is now 6
我的理論是,當1.c和2.c與foo.o鏈接時,它們都獲得自己的foo本地副本,因此,當一個程序修改foo時,另一個程序的版本不變。 是否可以創建一個可以在多個文件之間共享和修改的全局變量?
在C中,全局變量對於執行單元(過程)是全局的,而不對於執行環境(系統)是全局的。 標准C沒有提供在進程之間共享內存的機制。 但是,您的平台(Linux,Windows,MacOS等)可能會這樣做。 查找“共享內存”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.