我目前陷入一个问题。
下面是原始代码
sem_t s;
sem_init(&s, 0, 1);
我需要将sem_init替换为sem_open,因为它将在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
保存地址, sptr = sem_open("/s", O_CREAT, 0644, 1);
在预处理器宏下面应该可以解决问题,
#define s *sptr
使用上述方法,无论何时将
s
作为参数传递,例如sem_wait(&s)
都将变为所需的sem_wait(&*sptr) => sem_wait(sptr)
而无需更改sem_t s
。