IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Demande aide sur un Warning


Sujet :

C

  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 068
    Points
    43 068
    Par défaut Demande aide sur un Warning
    Bonjour,

    Je cherche à exploiter arge en dehors du main.

    A cette fin, j'ai déclaré une variable globale :

    Dans le main, j'ai affecté la valeur de arge à global_env comme ceci :
    ça fonctionne, hors de main la variable global_env contient bien la même adresse que arge (vérifié avec printf("%p",variable)

    Mais j'ai le warning suivant à la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning: assignment from incompatible pointer type [enabled by default]
    rien d'étonnant, le prototype de arge dans main étant *arge[] et moi je ne met pas les crochets.
    Si je les met, ça ne compile pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning: array ‘global_env’ assumed to have one element [enabled by default]
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: ‘global_env’ has an incomplete type
    ce qui ne me parait pas aberrant, un tableau devant avoir une taille.

    Quelle est la bonne pratique ?

    Merci d'avance.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Tu ne veux pas un tableau mais pointer sur l'adresse d'un tableau, utilise le type char **.

  3. #3
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,

    le «troisième paramètre de main» n'est pas forcément portable, même si la majorité des implémentations le comprennent. La façon standard d'accéder à une variable d'environnement est d'utiliser la fonction getenv.

    Certaines implémentations de la libc, comme la glibc, proposent aussi une variable globale, un simple extern char **environ; t'en donne l'accès.

    Ne connaissant pas ton problème je me permets de rajouter que, sans doute, il te serait plus simple d'extraire l'information de l'environnement pour la placer dans une de tes structure à un seul endroit et trimbaler cette structure de fonction en fonction plutôt que d'accéder à l'environnement d'un peu partout, surtout avec une variable globale.

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 068
    Points
    43 068
    Par défaut
    c'est justement pour réimplémenter getenv.

    Je vais essayer le **environ;

    Merci pour vos retours.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 068
    Points
    43 068
    Par défaut
    J'ai utilisé ça marche très bien, la valeur correspondant bien à *arge en paramètre de main

    Encore merci.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Demande aide sur les TList
    Par inform113 dans le forum C++
    Réponses: 3
    Dernier message: 17/03/2007, 13h45
  2. [MS Query] neophyte demande aide sur jointures SQL
    Par thorgal972 dans le forum Langage SQL
    Réponses: 19
    Dernier message: 27/11/2006, 17h13
  3. [phpMyAdmin] demande aide sur phpMyAdmin
    Par acipeg dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 25/11/2006, 14h35
  4. Demande aide sur certains avertissements
    Par yostane dans le forum MFC
    Réponses: 1
    Dernier message: 05/07/2006, 07h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo