2016-02-17 1 views
0

Je me suis rendu compte que j'avais besoin du compilateur -Wshadow après que je mette du code, donc je décide de l'utiliser en Codeblocks aussi, mais ça ne marche pas et je peux ' t comprendre pourquoi.Le compilateur "-Wshadow" ne fonctionne pas dans CodeBloks

Le code suivant:

#include <stdio.h> 

int main(void){ 
    int i = 0; 
    int arr[] = {1,2,3}; 

    for (int i=0 ; i < 3 ; i++){ 
     printf("%d ",arr[i]); 
    } 

    printf("\nI = %d\n",i); 
} 

Si je tente de le compiler dans mon Terminal avec la flags suivante:

-Wall -Wextra -Werror -Wstrict-prototypes -Wconversion -Wmissing-prototypes -Wold-style-definition -Wshadow -O0 -g 

-je obtenir la sortie suivante, qui est OK:

program.c: In function ‘main’: 
program.c:7:14: error: declaration of ‘i’ shadows a previous local [-Werror=shadow] 
    for (int i=0 ; i < 3 ; i++){ 
      ^
program.c:4:9: note: shadowed declaration is here 
    int i = 0; 
     ^
cc1: all warnings being treated as errors 

Maintenant, en utilisant le même compilateur Flags ne semble pas pour travailler, compile bien sans avertissements, tout comme le drapeau -Wshadow n'est pas présent.

Est-ce que quelqu'un sait comment résoudre ce problème?

version GCC est:

gcc (Ubuntu 5.3.0-3ubuntu1~14.04) 5.3.0 20151204 
+0

Regardez l'onglet "Build Log" dans Code :: Blocks, il montrera la ligne de commande exacte envoyée au compilateur. Vérifiez que cette ligne de commande contient votre drapeau; et utilisez copier-coller pour essayer la même ligne de commande dans votre console. Tous les avertissements apparaissent également dans Build Log. –

+0

[Ceci] (http://pastebin.com/raw/mrfuTFgj) est mon Build-Log – Michi

+0

Rien n'est construit ici, vous venez de lancer le programme que vous avez construit précédemment. Dans le menu Générer cliquez sur "Reconstruire" –

Répondre

1

Lorsque vous ajoutez des drapeaux du compilateur via l'IDE, il ne marque automatiquement les fichiers objets existants ou exécutable comme hors jour.

Vous devez cliquer sur "Reconstruire" pour faire une reconstruction complète de votre code en utilisant les nouveaux drapeaux.