规范级别:建议 规则描述:
函数调用语句中,在函数的参数列表中不要使用赋值操作符。赋值操作符包括=, +=, -=, *=, /=, %=, >>=, <<=, &=, |=, ^=,++,--。 理由:
避免产生不明确的赋值顺序。 举例:
// 不要象下面这样写代码: void fun1(int a); void fun2(int b) {
fun1(++b); //注意这里!
}
2.5.7 保护可重入函数中的全局变量
规范级别:规则 规则描述:
编写可重入函数时,若操作全局变量,则应加以保护。
举例:
如果全局变量不加以保护,当多个线程调用此函数时,很可能使此变量
变为不可知状态。
例如:假设 Exam是int型全局变量,函数Squre_Exam返回Exam平方值,
如下函数不具有可重入性。
Unsigned int example (int para) {
unsigned int temp; Exam = para;
temp = Square_Exam();
return temp; }
此函数若被多个线程调用,Exam可能成为未知的。
可改为如下方式:
Unsigned int example (int para)
{
unsigned int temp;
[申请信号量操作] Exam = para; temp = Square_Exam();
[释放信号量操作] return temp;
}
2.6类