当我们从AIX迁移到Linux Redhat并发现时,我遇到了一些遗留代码 对于strcmp来说,有些奇怪的情况似乎可以在AIX上编译良好,但在Linux上却出现了分段错误
void conv_virgin(char original_number[20],char normalised_number[20],char b_imsi[20]) {
if(strlen(original_number)<2||strcmp(original_number,""||strlen (b_imsi)<6)==0)
{
strcpy(normalised_number,original_number);
return;
}
}
对于AIX,该行似乎编译良好,因为共享对象已运行两年以上了
strcmp(original_number,""||strlen (b_imsi)<6)==0
我想念什么? 预期的代码是检查两个字段,现在将其更正为
if(strlen(original_number)<2||strlen (b_imsi)<6)