gpt4 book ai didi

c - 涉及多个 .c 文件时如何处理全局变量

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:22 25 4
gpt4 key购买 nike

我有两个 .c 文件(main.c 和 support.c)。首先编译support.c,然后编译main.c 并与support.o 链接。我在 support.c 中有几个非静态全局变量。

support.c 中的那些全局变量是如何存储的?如果 main.c 是多线程的并且有两个线程调用 support.c 中的函数,它们是共享这些全局变量,还是每个线程都有自己的副本?

最佳答案

全局变量就是全局变量,无论您编译和链接程序的多少部分,始终只有一个。如果多个线程同时访问全局数据,您需要自己确保正确的同步。

获取全局变量或 block 静态变量的单独副本的唯一方法是将其声明为 _Thread_local,这是在 C11 中引入的。线程局部全局变量在线程启动时初始化,并在线程加入时释放。

关于c - 涉及多个 .c 文件时如何处理全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12520924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com