在C语言中&是取地址符号,所以&sem -1 是代表sem同类型变量地址的前一个,
这个要具体看你代码目的啦,理论上这样调用是没有语法错误的,
其实这里就相当于是sem_post,只是换了一个地址而已。
但到底有没有问题,要看上下文啦,追踪各个变量的具体值,
你要结合你的上下文仔细判断这样的具体意义啦。
不过这样的编程习惯可能也有一些不可取,因为变量的意义,函数调用的意义不是太明确啊。
本来信号量是一个比较简单的操作,但你给的这段代码明显不是太规范的,
所以容易造成歧义,
你必须结合实际的代码来进行理解,
总之:
1. sem_post(&sem-1)其实和sem_post(&sem)是类似的操作
2. 这里要实现的前提是&sem-1 的地址也是一个sem_t 类型变量,并正确初始化了。