c - 在结构内部定义结构指针
问题描述
我得到这样的结构:
typedef struct runnable
{
/* something */
struct runnable *next;
} runnable_t;
在某些功能中:
int myFun(runnable_t runnable)
{
/* something */
runnable.next = NULL;
pool->first = &runnable;
pthread_cond_signal(&(pool->myCond));
pthread_mutex_unlock(&(pool->lock));
}
并且,在其他一些 func2 中:
if (pool->first == NULL)
pthread_cond_wait(&(pool->myCond), &(pool->lock));
printf("%d\n",pool->first);
好的,所以:myFunc 应该将 runnable->next 设置为 NULL 并发出 myCond 信号,然后我需要在其他函数中使用 runnable->next。
问题是在 func2:runnable->next 内部不是 NULL。我已经检查并且两个函数中的可运行地址是相同的,并且其他可运行的 atrr 也是正确的。只有这个“下一个”道具。不是。我认为我对 struct 和“下一个”的定义是有道理的。
什么是差异beeten
struct runnable_t * next
和
runnable_t * next
(如果可能的话)
那是问题吗?
解决方案
问题是你没有通过引用传递结构int myFun(runnable_t runnable)
,所以只是结构更改的副本,而不是原始传递的结构
您必须将您的函数行为更改为int myFun(runnable_t* runnable)
,并在函数中更改runnable.
为runnable->
( runnable->next = NULL;
)
推荐阅读
- internet-explorer - 如何根据浏览器有条件地渲染一个html页面
- regex - 小于或等于日期字段的正则表达式
- cuda - 如何在 VS 中将常规 C++ 项目更新为 CUDA 运行时项目?
- c++ - 试图理解 static_cast 中的预期行为
- javascript - 设置`ConstructorFunc.prototype.constructor = ConstructorFunc`。想法是什么?
- elasticsearch - Logstash 不会将日志发送到弹性 (Windows)
- python - 如何隔离 .json 文件?
- amazon-dynamodb - 删除多个项目 DynammoDB
- webgl - 浏览器不支持带有 webgl 的 d3d11
- sql - 将字段及其值从主表移动到其详细信息表