我目前遇到了一个问题。
以下是原始代码
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? 感谢
P.S。我没有宣布sem_t * s,因为这是一个巨大的图书馆,我不会改变它太多
答案 0 :(得分:0)
创建一个新的信号量指针
sem_t *sptr;
调用sem_open
,因为sptr
拥有地址
sptr = sem_open("/s", O_CREAT, 0644, 1);
下面的预处理器宏应该可以解决问题,
#define s *sptr
使用上述方法,当s
作为参数传递时,例如sem_wait(&s)
沸腾到sem_wait(&*sptr) => sem_wait(sptr)
,而不需要更改sem_t s
。