我有这个 C 代码:
EaglePage* EaglePage_RealCopy(EaglePage *page)
{
if(NULL == page) {
return NULL;
}
switch(page->type) {
case EagleDataTypeUnknown:
EagleLogger_Log(EagleLoggerSeverityError, "Cannot page of Unknown type.");
return NULL;
case EagleDataTypeInteger:
return EaglePage_RealCopyInt_(page);
case EagleDataTypeVarchar:
return EaglePage_RealCopyVarchar_(page);
case EagleDataTypeFloat:
return EaglePage_RealCopyFloat_(page);
}
}
当我在 Mac OS X 上使用 clang 编译它时,它知道开关处理所有“可能的”分支,并且不会警告缺少返回语句(如 Java)。但是,如果我通过 GCC 4.4.5 运行相同的代码,它总是会给出缺少返回警告。
这很烦人,因为如果我放入 return 语句,那么我的代码覆盖率就会中断,因为我没有涵盖那些“不可能”的场景。GCC 有没有办法像 clang/javac 一样处理这个问题?