letscode
Messages postés7Date d'inscriptiondimanche 30 décembre 2007StatutMembreDernière intervention19 janvier 2008
-
4 janv. 2008 à 19:40
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
5 janv. 2008 à 11:36
Bonjour,
Bon j'avance bien :)
J'ai un problème irrésolvable.
J'utilise Visual Studio 2005, et j'ai plusieurs fichiers qui incluent un fichiers "communs.h" qui contient tous mes #include et mes #define.
Jusque là pas de problème.
Cependant, cette après midi je voulais rajouter une variable globale dans "communs.h" et ca m'a fait pleins d'erreurs. Je crois que j'ai tout lu sur le sujet mais impossible de trouver une solution.
Selon ce que j'essaie ca me dit soit "variable déjà définie dans ..." soit "symbole externe non résolu..".
Mon projet n'inclue pas de librairie externe et est en multithreadé. Je n'utilise pas de MFC, mais que des API-32 (ce qui va faire plaisir à Brunews :-p )
Voici le contenu de mon fichier, le problème se trouvant au niveau de Tab et de Heap.
//---DEBUT---
#ifndef _COMMUNS_H_
#define _COMMUNS_H_
/* include */
#include <windows.h>
#include "Source_1.h"
#include "Source_2.h"
Cyr62110
Messages postés65Date d'inscriptionvendredi 10 février 2006StatutMembreDernière intervention21 octobre 2009 4 janv. 2008 à 21:32
'static' est une valeur qui est valable pour le programme complet jusqu'a ce qu'on change la valeur.
Alors que 'extern' dit simplement que la variable et sa définition sont dans un autre fichier.
Bye
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 4 janv. 2008 à 21:55
static permet de declarer une variable accesible seulement dans le fichier ou elle a été declarer, extern permet d'acceder depuis un fichier source a une variable déclaré ds un autre fichier
ex:
ds test.c:
static BYTE i[] = { 'T', 'e', 's', 't' };
int j = 1234;
void __stdcall GetI(BYTE* Ret)
{
memcpy(Ret, i, sizeof(i));
}
void __stdcall PrintJ(void)
{
printf("%i\n", j); // si on change la valeur de j ds main.c, elle change ici aussi..
}
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 5 janv. 2008 à 11:23
"NON, on ne met pas de variable dans un h"
=> Oui et non. Autant une variable, je suis d'accord, mais ici, on peut pas vraiment dire qu'il s'agit d'une variable une fois déclarée "constante" (surtout dans le cas de chaine de caractères). Enfin tfacon, mettre dans le .c/.cpp, ca coute rien.