Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我目前陷入了一个问题。
下面是原始代码
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,因为这是一个巨大的库,我不会改变太多
创建一个新的信号量指针,
sem_t *sptr;
调用保存地址sem_open,sptr
sem_open
sptr
sptr = sem_open("/s", O_CREAT, 0644, 1);
而下面的预处理器宏应该可以解决问题,
#define s *sptr
使用上述方法,当 evers作为参数传递时,例如sem_wait(&s)沸腾sem_wait(&*sptr) => sem_wait(sptr)为所需的而不更改sem_t s.
s
sem_wait(&s)
sem_wait(&*sptr) => sem_wait(sptr)
sem_t s