# Setenv et Getenv sur mac OS



## job2221 (19 Novembre 2010)

Bonsoir,

J'en appelle a votre aide car j'ai codé une fonction en C utilisant getenv et setenv et ca compile et fonctionne parfaitement sur fedora mais par contre une fois que j'essaie de compiler la meme chose sur mon mac, il me dit :
warning: implicit declaration of function setenv
warning: implicit declaration of function getenv

Quelqu'un saurait pourquoi ?
Merci d'avance.

Cordialement,


----------



## Zeusviper (19 Novembre 2010)

Question bête : t'as inclus la stdlib ?


----------



## job2221 (19 Novembre 2010)

Oui oui, j'ai tout inclu vu que le meme fichier .c fonctionne sur fedora.


----------



## Zeusviper (19 Novembre 2010)

tu as installé XCode ? il est à jour? 

est ce qu'un simple hello world fonctionne bien?

tu as bien les include présent dans /usr/include/ ?


----------



## job2221 (19 Novembre 2010)

Je n'utilise pas Xcode, je tape mon code sous emacs et compile avec la ligne de commande suivante : gcc -W -Wall -Wextra -Werror -std=c99 -pedantic -O2 -pipe -D_XOPEN_SOURCE=600 -g -ggdb

Pour le hello world oui, ca fonctionne parfaitement.

Et oui les include sont bien present dans usr/include/

Peut etre une erreur dans mes flag de compil?


----------



## Zeusviper (19 Novembre 2010)

Bon.. alors tu fais ce que tu veux mais : même si tu n'utilises pas XCode, tu devrai l'installer de façon à avoir quelque chose de propre et parfaitement fonctionnel même en ligne de commande. (je te suggérerai de dégager ce que tu as installé auparavant! et de refaire une install propre des outils de dev). 

pour les flags de compil, avant d'en faire une liste à rallonge que tu ne sembles vraiment pas maitriser, compile déjà simplement!! et après réfléchis à ce que veulent dire ces flags...


----------



## job2221 (19 Novembre 2010)

J'ai un xcode installe et a jour. Je préfère juste coder sur le terminal. 
En ce qui concerne les flags je demandais juste sil n'en manquais pas un pour utiliser getenv et setenv. Mais bon ...
Malheuresement je crois que personne n'a la solution lol.
C'est pas grave. Je vous ferai signe si je trouve. 
Merci de vos réponse en tout cas.


----------



## Zeusviper (19 Novembre 2010)

job2221 a dit:


> J'ai un xcode installe et a jour. Je préfère juste coder sur le terminal.


Ok! pas de soucis là dessus! je voulais m'en assurer!



job2221 a dit:


> En ce qui concerne les flags je demandais juste sil n'en manquais pas un pour utiliser getenv et setenv.


Et qu'est ce qui te fais croire qu'il en MANQUE!
Tu as besoin de ces flags ?

Si tu comprends ce qu'ils font, voici ce qu'on trouve dans le man des fonctions getenv et setenv et qui devrait résoudre ton "problème" : 
"The *getenv*() function conforms to ISO/IEC 9899:1990 (``ISO C90'')."


----------



## ntx (19 Novembre 2010)

getenv est dans la norme et fonctionne parfaitement dans Xcode. 
setenv pour moi n'est pas dans la norme, mais il est aussi présent dans la  stdlib fournie par Apple.

Revois ton programme et/ou ta commande de compil.


----------



## tatouille (21 Novembre 2010)

job2221 a dit:


> Bonsoir,
> 
> J'en appelle a votre aide car j'ai codé une fonction en C utilisant getenv et setenv et ca compile et fonctionne parfaitement sur fedora mais par contre une fois que j'essaie de compiler la meme chose sur mon mac, il me dit :
> warning: implicit declaration of function setenv
> ...



*#include* *<stdlib.h>


*"implicit declaration of function" c'est marqué dessus comme le port-salut ton compiler ne trouve pas de prototype

man setenv


----------

