2017-08-24 308 views
2

当使用gcc与-Werror=pedantic编译以下代码时,它将报告error: ISO C forbids forward references to 'enum' types [-Werror=pedantic]gcc选项来检测“对'enum'类型的前向引用”

enum foo foo_test(void); 

enum foo { 
    FOO_0 
}; 

enum bar { 
    BAR_0 
}; 

int main(int argc, char **argv) 
{ 
    printf("sizeof(enum foo) %zu, sizeof(enum bar) %zu\n", 
      sizeof(enum foo), sizeof(enum bar)); 
    return 0; 
} 

在我的项目中,我使用了很多第三方的开源代码,而且有些源代码也有上述相同的问题。如果我将-Werror=pedantic添加到gcc选项,它会导致很多错误。我想检测有关的错误,只是对“枚举”类型的前向引用,但没有额外的错误。是否有另一个gcc选项可以报告这个错误?

gcc版本:臂无 - EABI - 海合会v4.9.3

+0

在https://godbolt.org上测试了您的代码。即使没有'-Werror = pedantic',它也不会编译 – xvan

+0

@xvan umm,错误的链接也许?请注意,编译器必须是GCC才能编译,它是否认真使用GCC扩展 –

+0

@xvan?我找不到编译器,这个*不是*编译的? –

回答

1

使用-pedantic没有任何-Werror。它只会产生一个警告,但不会停止汇编。您可以将所有这些诊断信息收集到日志文件中,然后通过grep ping进行分析。例如,

% make 2> errors.log 
% grep -A 3 "ISO C forbids forward references to 'enum' types" errors.log