0

我目前陷入了一个问题。

下面是原始代码

sem_t s;
sem_init(&s, 0, 1);

我需要用 sem_open 替换 sem_init 因为它将在 iOS 上使用

sem_t s;
sem_open("/s", O_CREAT, 0644, 1); //which will return sem_t*

我应该如何将返回地址分配给 s?谢谢

ps 我没有声明 sem_t* s,因为这是一个巨大的库,我不会改变太多

4

1 回答 1

1

创建一个新的信号量指针,

 sem_t *sptr;

调用保存地址sem_opensptr

 sptr = sem_open("/s", O_CREAT, 0644, 1);

而下面的预处理器宏应该可以解决问题,

 #define s *sptr

使用上述方法,当 evers作为参数传递时,例如sem_wait(&s)沸腾sem_wait(&*sptr) => sem_wait(sptr)为所需的而不更改sem_t s.

于 2013-11-07T14:37:29.317 回答