gpt4 book ai didi

C语言: Function interactions

转载 作者:行者123 更新时间:2023-11-30 15:18:37 26 4
gpt4 key购买 nike

我正在编写一段代码,我开始怀疑自己是否会实现我的想法...现在我有 3 个不同的文件 - 让我们称之为 A.(c/h) B. (c/h) C.(c/h)。 A.c 正在创建一个线程,用于处理需要发布的消息。 B.c 通过调用 A.c 的 create() 函数来初始化 A.c。 A.c 还有一个 B.c 调用的函数,它只处理一些数据并将其放入 A.c 的线程处理的队列中。这里的一切都按预期工作...

现在我想做的是实现 C.c ,它将处理来自某些外部代码的回调/信号。如果我要调用 A.c 的处理和排队函数,它会是 B.c 使用的函数的同一个实例吗?我怎样才能确保它是。我知道在 cpp 中我会考虑将其设为单例并彻底改变设计,但现在这不是一个选择。我只是想确保 C.c 将使用 A.c 的唯一实例以及 B.c 初始化的所有变量。

谢谢!

最佳答案

目前尚不清楚您真正关心的是什么,也许这些评论会有所帮助:

C 不像 C++ 或 Objective-C 等 OO 语言那样拥有对象。 C 函数对作为参数传递给它的数据和/或存储在全局变量中的数据进行操作;没有对象实例就没有实例变量。

因此,当您从 C.c 调用 A.c 中定义的函数时,它将对您传递给它的数据以及它访问的任何全局数据进行操作。当您从 B.c 调用相同的内容时,它将对传递的数据以及从 C.c 调用时使用的相同全局数据(如果有)进行操作.

也许您关心的是该函数将在哪个线程上调用?那么线程将取决于调用者的线程;如果 B.c 中的函数与 C.c 中的函数在不同的线程上运行,则从 B.c 调用 A.c 中的函数和 C.c 将在不同的线程上运行。由于如果您使用线程本地存储,您似乎主要关心变量,那么在这种情况下,来自 B.cC.c 的调用的变量将有所不同 - 如果您不这样做不知道什么是线程本地存储不用担心,您不能“意外”使用它,因此在您的情况下这不会成为问题。

HTH 不仅仅是令人困惑!

关于C语言: Function interactions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278395/

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