2010-10-24 4 views
1

Je faisais juste mon première application en C et moi avons ce avertissement (édité): unused variable pppointeur C sur un pointeur: variable inutilisée

int compteur = 1; 
int *p = &compteur; 
int **pp = &p; 

Je voulais juste faire pp pointant sur l'adresse Pardonnez-moi si c'est une question stupide, mais dans mon livre ils ne parlent pas de pointeurs sur le pointeur. Merci

+0

À moins que vous dites au compilateur pour traiter les avertissements comme des erreurs, ce cas produit généralement un avertissement au mieux. – AraK

Répondre

2

Eh bien, si c'est la seule chose que votre programme fait, alors oui, le compilateur est correct pour vous avertir des variables inutilisées, parce que vous ne faites rien avec eux!

Si vous deviez effectuer par ex. printf("%d\n", **p);, alors l'avertissement devrait disparaître.

3

C'est parfaitement légitime. Votre compilateur vous informe simplement que vous avez créé une variable, puis que vous n'avez rien fait avec elle - indiquant normalement une erreur de programmation.

3

Je peux supposer, que ce n'est pas erreur, mais avertissement. "variable inutilisée pp" signifie que vous n'utilisez pas la variable pp dans un autre code.

+0

oh bon, donc il n'y a pas besoin de s'inquiéter :) –

1

i ont cet avertissement (modifié): utilisé pp variables

Kudos pour le respect (et inquiétant et demande) le message d'avertissement du compilateur. Continuez comme ça. (je toujours compiler avec l'-Werror afin que "avertissements" sont traités comme je trouve toujours utile "erreurs.".)

Je cite la gcc warnings page:

-Wunused variable

Warn chaque fois qu'une variable locale variable statique ou non constante est inutilisée en dehors de sa déclaration . Cet avertissement est activé par -Wall.

Strictement parlant, il est logique de déclarer une variable et ensuite ne pas l'utiliser. C'est le cas pour pp et le compilateur l'alerte. Dans ce cas particulier,

  • soit vous utilisez pp dans certains requis manière ou

  • utiliser de la manière "non-op".

Voici le code de manière "non-op":

int main() { 

    int compteur = 1; 
    int *p = &compteur; 
    int **pp = &p; 
    (void) pp;   // no-op use of pp 
} 

Pour plus de détails sur no-op utilisation, voir l'autre fil: What does the following code do?