2017-08-24 1 views
2

Lors de la compilation du code suivant à l'aide de gcc avec -Werror=pedantic, le rapport error: ISO C forbids forward references to 'enum' types [-Werror=pedantic] sera généré.Options gcc pour détecter les références "forward vers les types" 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; 
} 

Dans mon projet, je me sers beaucoup de code tiers open source, et un code source a le même problème de ce qui précède. Si j'ajoute -Werror=pedantic aux options gcc, cela provoquera de nombreuses erreurs. Je veux détecter l'erreur à propos de références avant à 'enum' types seulement, mais pas d'erreurs supplémentaires. Y at-il une autre option gcc peut signaler cette erreur?

gcc version: v4.9.3 bras none-eabi-gcc

+0

Testé votre code sur https://godbolt.org. Il ne compile même pas sans '-Werror = pedantic' – xvan

+0

@xvan umm, lien erroné peut-être? Notez que le compilateur doit être GCC pour compiler, il utilise une extension GCC –

+0

@xvan sérieusement? Je n'ai pas pu trouver de compilateur sur lequel * ne compilait pas? –

Répondre

1

Utilisez -pedantic sans -Werror. Cela produira juste un avertissement mais n'arrêtera pas la compilation. Vous pouvez rassembler tous ces diagnostics dans un fichier journal, puis les analyser par ping grep. Par exemple

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