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 :

[debutant] structure d'un programme


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut [debutant] structure d'un programme
    Bonjour à tous!
    Au risque de passer pour un gros , j'aimerais avoir quelques explications sur des choses, il faut bien le dire, de base.
    En effet, tout le monde sera d'accord, lorsque le programme devient conséquent, il est déconseillé de mettre toutes mes fonctions dans le main, celà rent le programme illisible!

    On crée donc des fichiers annexes (.cpp) auxquels on a coutume de rajouter un .h pour la déclaration des prototypes de fonctions...
    Jusque là tout va bien.

    Le .h ira dans le main, mais doit il quand même être déclaré dans le fichier annexe.cpp aussi non?
    Quand faut-il faire usage du mot clé extern? N'y a t-il pas de risques de multi-déclarations?

    Dans le cas, d'un mélange de fichiers .c et .cpp, comment doit se passer ces déclarations? Et j'irai même plus loin: dans mon projet, j'ai un mélange de template, de fonctions C++ "normales" et des fonctions dans un fichier C. Comment doit-on organiser ces déclarations?

    Les templates, je les ai mis dans un .h (sur les conseils de Miles), et j'ai un problème de déclaration au niveau de mon fichier calc_camir.c (d'où ce post!)

    Voici mon main.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    #include <list>
    #include <algorithm>
    #include <iostream>
    #include "calc_camir.h" // header de mon fichier C
     
    // Les 3 fonctions exportées de la DLL tsrir_c.dll
    extern "C" int IRnb_images( int num_choc, int camera, int *nbimages );
    extern "C" int IRimages( int num_choc, int camera, long image_deb,
    long image_fin, unsignedshort ** Images);
    extern "C" int IRimages_pas( int num_choc, int camera, long image_deb,
    long image_fin, long pas, unsignedshort ** Images );
     
    #include "CImg.h"
    usingnamespace cimg_library;
    #include "analyse.h"   // templates nécessitant CImg
    #include "quadrillage.h"
    #include "warping.h"
    #include "masque.h"
    #include "outils.h"
    #include "choixzone.h"
     
    int main() { etc....
    
    et voici le calc_camir.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    
     
    #ifndef _CALCCAMIR_H // Pour éviter des warnings de redéfinitions lors de la compilation.
    #define _CALCCAMIR_H
    //-------------------------------------------------------------------------------------
    // Chemin des LUT
    #define DVCAMIR_NFS_LUT_DIR "F:\\lut\\"
    //-------------------------------------------------------------------------------------
    // PTSSURLUT doit être >=7 car sinon 3*2^14>MAXPTSLUT avec MAXPTSLUT=500;
    #define PTSSURLUT 8 // On prend 1 point sur 2^PTSSURLUT pour définir la LUT
    #define MAXPTSLUT 500 // Nb MAX de points max sur chaque LUT
    #define MAXSIZELINE 100 // Nb MAX de caracteres d'une ligne
    #define MAXDATAINFILE 2000 // Nb MAX de caracteres dans le fichier LUT
    #define MAXDATALUT 200 // Nb MAX de données de la LUT brute
    //-------------------------------------------------------------------------------------
    #ifndef GEMINY
    #define GEMINY 01
    #endif
    #ifndef INDIGO
    #define INDIGO 02
    #endif
    #define NUM_LUMV12_MAX 12
    #define NB_FENETRES 16
    // Stocke un fichier LUT en mémoire.
    char FileLUTStockMem[MAXDATAINFILE];
    typedefstruct
    {
    float Temp_Fut; // Température du fut optique
    float Temp_Prisme; // Température du prisme
    float Temp_Saphir; // Température de la fenetre saphir
    float Trans_Fut[2]; // Transmission du fut optique
    float Trans_Prisme[2]; // Transmission du prisme
    float Trans_Saphir[2]; // Transmission de la fenetre saphir
    short Type; // Type de caméra (Geminy (1) ou Indigo (2))
    short PtsLUT; // Nb de points dans LUT1 et LUT2
    float LUT1[MAXPTSLUT]; // LUT pour la zone 1
    float LUT2[MAXPTSLUT]; // LUT pour la zone 2
    int PosArrete; // Position de l'arrete qui sépare les 2 zones du LPT
    char LUT1FilePath[256]; // Chemin vers le fichier de la LUT1.
    char LUT2FilePath[256]; // Chemin vers le fichier de la LUT2.
    char LUT3FilePath[256]; // Chemin vers le fichier de la LUT3.
    } struct_endoscope;
    struct_endoscope Endoscope[12];
     
     
    #define Longint long
    extern Longint TSRqParm (Longint NumChoc, char* NomProd, char* NomObjet,
    char*NomParam, Longint NbVal, char**valeurs,
    Longint* NbElem, Longint * format ); // pour une DLL
    
     
    // ---------> Interpolation linéaire des données
    short Interpol (long *xTab, long *yTab, int lTab, float xVal, float *yVal);
    // ---------> Reset de la structure Endoscope (tout à 0)
    void Reset_Endoscope (struct_endoscope *Endoscope);
    // ---------> Lecture d'une variable de type float dans Top
    short LitTopFloat(long nchoc, char *NmProd, char *NmObj, char *NmPar, float *Val);
    // ---------> Lecture d'une variable de type String dans Top
    short LitTopString(long nchoc, char *NmProd, char *NmObj, char *NmPar, char *Str);
    // ---------> Lecture d'un fichier LUT .txt (calibration)
    short ReadFicLUT (char *NmFicLUT, long *xLUTi, long *yLUTi, short *lLUTi);
    // ---------> Construction de la LUT finale pour passer des DL en T°
    short ConstructLUT (long *xLUTi, long *yLUTi, short lLUTi,
    short NumLUT, short Zone, struct_endoscope *Endoscope,
    float *xLUT , float *yLUT , short *lLUT );
    // ---------> Lecture des fichiers de calibration LUT1 ou 2 ou 3
    short InitLUT (long nchoc, short nEndo, short nLUT, long *xLUTi, long *yLUTi, short *lLUTi);
    // ---------> Recopie de la LUT calibrée dans les varaibles de la structure Endoscope
    void RecopieLUT(struct_endoscope *Endoscope , short Zone , float *DL , float *TP ,
    short lDL);
    // ---------> Lecture des données Top et initialisation de la structure Endoscope
    short Init_Endoscope (long nchoc, short nEndo, struct_endoscope *Endoscope);
    // ---------> Calcul de la T° à partir des DL mesurés
    short DL2Temp (struct_endoscope *Endoscope, short zone, long DL, float *Temp);
    // ---------> Calcul du DL à partir d'une température
    short Temp2DL (struct_endoscope *Endoscope, short zone, float Temp, long *DL);
     
    #endif
    
    Je ne sais pas trop comment m'en sortir, j'ai des erreurs bizarres: soit il ne connait pas la structure, soit j'ai des milliers d'erreurs...

    Bref, je crois que j'ai grandement besoin de votre aide

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Quitte à me répéter, pas de using namespace avant la fin de toutes les inclusions.
    Tu ne peux pas compiler ton fichier .c comme un fichier cpp ?

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Miles
    Quitte à me répéter, pas de using namespace avant la fin de toutes les inclusions.
    Mais je ne peux pas, mes .h contiennent des tas de template sans le fameux cimg_library:: !!!
    exemple :
    warping.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    template<typename T> CImg<> getwarp(const CImg<T>& src, const CImg<>& u) {
    CImg<T> warp(src);
    cimg_mapXY(warp,x,y) warp(x,y) = (T)src.linear_pix2d(x - u(x,y,0), y - u(x,y,1));
    return warp;
    }
    
    il y a besoin de mettre cimg::library avant CImg ...
    Ou alors il y a un truc que je pige pas?

  4. #4
    Membre confirmé Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Par défaut
    pourquoi tu mets pas des include dans tes headers ?? (avec un #ifndef... évidemment)

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par poukill
    Mais je ne peux pas, mes .h contiennent des tas de template sans le fameux cimg_library:: !!!
    exemple :
    warping.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    template<typename T> CImg<> getwarp(const CImg<T>& src, const CImg<>& u) {
    CImg<T> warp(src);
    cimg_mapXY(warp,x,y) warp(x,y) = (T)src.linear_pix2d(x - u(x,y,0), y - u(x,y,1));
    return warp;
    }
    
    il y a besoin de mettre cimg::library avant CImg ...
    Ou alors il y a un truc que je pige pas?
    Oui, tu devrais mettre le nom du namespace devant, c'est à ça que servent les namespace !

  6. #6
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Miles
    Oui, tu devrais mettre le nom du namespace devant, c'est à ça que servent les namespace !
    Tu veux dire que using namespace cimg_library n'est pas une bonne idée pour simplifier le programme?
    Que je devrai donc rajouter partout où c'est nécessaire le namespace correspondant?

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Dans les headers oui, c'est une manière propre de programmer que de faire ça - sinon à quoi servent les namespaces si on les ramène automatiquement dans l'espace global ? -

  8. #8
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Ok d'accord, je vais donc recoder mes sources... Ca va prendre un peu de temps !

    Citation Envoyé par Miles
    Tu ne peux pas compiler ton fichier .c comme un fichier cpp ?
    J'ai déjà essayé, mais sans grand résultat!
    Je viens de reconstruire un projet des plus simples avec ce main.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    #include "calc_camir.h"
     
    int main() {
          int cr = Init_Endoscope (36181, 1, Endoscope);
          return (0);
    }
    
    ainsi que calc_camir.cpp et calc_camir.h (cf plus haut)
    J'obtiens les erreurs suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    main.obj : error LNK2005: "long (* DL_Zone1)[13]" (?DL_Zone1@@3PAY0N@JA) déjà défini(e) dans calc_camir.obj
    main.obj : error LNK2005: "float (* Temperature_Zone0)[13]" (?Temperature_Zone0@@3PAY0N@MA) déjà défini(e) dans calc_camir.obj
    main.obj : error LNK2005: "float PLHRT" (?PLHRT@@3MA) déjà défini(e) dans calc_camir.obj
    main.obj : error LNK2005: "long (* DL_Lu)[13]" (?DL_Lu@@3PAY0N@JA) déjà défini(e) dans calc_camir.obj
    main.obj : error LNK2005: "struct struct_endoscope * Endoscope" (?Endoscope@@3PAUstruct_endoscope@@A) déjà défini(e) dans calc_camir.obj
    main.obj : error LNK2005: "long (* DL_Zone0)[13]" (?DL_Zone0@@3PAY0N@JA) déjà défini(e) dans calc_camir.obj
    main.obj : error LNK2005: "float PCIRT" (?PCIRT@@3MA) déjà défini(e) dans calc_camir.obj
    main.obj : error LNK2005: "float (* Temperature_Zone1)[13]" (?Temperature_Zone1@@3PAY0N@MA) déjà défini(e) dans calc_camir.obj
    main.obj : error LNK2005: "float (* Temperature_Lue)[13]" (?Temperature_Lue@@3PAY0N@MA) déjà défini(e) dans calc_camir.obj
    main.obj : error LNK2005: "char * FileLUTStockMem" (?FileLUTStockMem@@3PADA) déjà défini(e) dans calc_camir.obj
    calc_camir.obj : error LNK2001: symbole externe non résolu "long __cdecl TSRqParm(long,char *,char *,char *,long,char * *,long *,long *)" (?TSRqParm@@$$FYAJJPAD00JPAPADPAJ2@Z)
    
    J'ai des problèmes de redéfinition...

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Pas étonnant, tu déclares des variables dans les en-têtes...

  10. #10
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Miles
    Pas étonnant, tu déclares des variables dans les en-têtes...
    euh... oui c'est pas faux

    Dans calc_camir.h, j'ai à présent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    #ifndef _CALCCAMIR_H // Pour éviter des warnings de redéfinitions lors de la compilation.
    #define _CALCCAMIR_H
    //-------------------------------------------------------------------------------------
     
    // ---------> Interpolation linéaire des données
    short Interpol (long *xTab, long *yTab, int lTab, float xVal, float *yVal);
    // ---------> Reset de la structure Endoscope (tout à 0)
    void Reset_Endoscope (struct_endoscope *Endoscope);
    // ---------> Lecture d'une variable de type float dans Top
    short LitTopFloat(long nchoc, char *NmProd, char *NmObj, char *NmPar, float *Val);
    // ---------> Lecture d'une variable de type String dans Top
    short LitTopString(long nchoc, char *NmProd, char *NmObj, char *NmPar, char *Str);
    // ---------> Lecture d'un fichier LUT .txt (calibration)
    short ReadFicLUT (char *NmFicLUT, long *xLUTi, long *yLUTi, short *lLUTi);
    // ---------> Construction de la LUT finale pour passer des DL en T°
    short ConstructLUT (long *xLUTi, long *yLUTi, short lLUTi,
    short NumLUT, short Zone, struct_endoscope *Endoscope,
    float *xLUT , float *yLUT , short *lLUT );
    // ---------> Lecture des fichiers de calibration LUT1 ou 2 ou 3
    short InitLUT (long nchoc, short nEndo, short nLUT, long *xLUTi, long *yLUTi, short *lLUTi);
    // ---------> Recopie de la LUT calibrée dans les varaibles de la structure Endoscope
    void RecopieLUT(struct_endoscope *Endoscope , short Zone , float *DL , float *TP ,
    short lDL);
    // ---------> Lecture des données Top et initialisation de la structure Endoscope
    short Init_Endoscope (long nchoc, short nEndo, struct_endoscope *Endoscope);
    // ---------> Calcul de la T° à partir des DL mesurés
    short DL2Temp (struct_endoscope *Endoscope, short zone, long DL, float *Temp);
    // ---------> Calcul du DL à partir d'une température
    short Temp2DL (struct_endoscope *Endoscope, short zone, float Temp, long *DL);
    #endif
    
    et dans calc_camir.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    
    #include "calc_camir.h"
     
    // Chemin des LUT
    #define DVCAMIR_NFS_LUT_DIR "F:\\lut\\"
    //-------------------------------------------------------------------------------------
    // PTSSURLUT doit être >=7 car sinon 3*2^14>MAXPTSLUT avec MAXPTSLUT=500;
    #define PTSSURLUT 8 // On prend 1 point sur 2^PTSSURLUT pour définir la LUT
    #define MAXPTSLUT 500 // Nb MAX de points max sur chaque LUT
    #define MAXSIZELINE 100 // Nb MAX de caracteres d'une ligne
    #define MAXDATAINFILE 2000 // Nb MAX de caracteres dans le fichier LUT
    #define MAXDATALUT 200 // Nb MAX de données de la LUT brute
    //-------------------------------------------------------------------------------------
    // Stocke un fichier LUT en mémoire.
    char FileLUTStockMem[MAXDATAINFILE];
    typedefstruct
    {
    float Temp_Fut; // Température du fut optique
    float Temp_Prisme; // Température du prisme
    float Temp_Saphir; // Température de la fenetre saphir
    float Trans_Fut[2]; // Transmission du fut optique
    float Trans_Prisme[2]; // Transmission du prisme
    float Trans_Saphir[2]; // Transmission de la fenetre saphir
    short Type; // Type de caméra (Geminy (1) ou Indigo (2))
    short PtsLUT; // Nb de points dans LUT1 et LUT2
    float LUT1[MAXPTSLUT]; // LUT pour la zone 1
    float LUT2[MAXPTSLUT]; // LUT pour la zone 2
    int PosArrete; // Position de l'arrete qui sépare les 2 zones du LPT
    char LUT1FilePath[256]; // Chemin vers le fichier de la LUT1.
    char LUT2FilePath[256]; // Chemin vers le fichier de la LUT2.
    char LUT3FilePath[256]; // Chemin vers le fichier de la LUT3.
    } struct_endoscope;
    struct_endoscope Endoscope[12];
     
     
    #define Longint long
    extern "C" Longint TSRqParm (Longint NumChoc, char* NomProd, char* NomObjet,
    char*NomParam, Longint NbVal, char**valeurs,
    Longint* NbElem, Longint * format );
     
     
    float Temperature_Lue[NB_FENETRES] [NUM_LUMV12_MAX+1];
    float Temperature_Zone0[NB_FENETRES] [NUM_LUMV12_MAX+1];
    float Temperature_Zone1[NB_FENETRES] [NUM_LUMV12_MAX+1];
    long DL_Lu[NB_FENETRES] [NUM_LUMV12_MAX+1];
    long DL_Zone0[NB_FENETRES] [NUM_LUMV12_MAX+1];
    long DL_Zone1[NB_FENETRES] [NUM_LUMV12_MAX+1];
    // Données calculée en Temps Réel.
    // float TempRTC2, TempRTC3;
    float PLHRT, PCIRT;
    
    Ce qui doit être mieux...
    Cependant, j'ai un problème avec la structure endoscope :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    c:\Documents and Settings\GD280706\Bureau\test2\test2\calc_camir.h(25) : error C2065: 'struct_endoscope' : identificateur non déclaré
    c:\Documents and Settings\GD280706\Bureau\test2\test2\calc_camir.h(25) : error C2065: 'Endoscope' : identificateur non déclaré
    c:\Documents and Settings\GD280706\Bureau\test2\test2\calc_camir.h(25) : error C2182: 'Reset_Endoscope' : utilisation non conforme du type 'void'
    c:\Documents and Settings\GD280706\Bureau\test2\test2\calc_camir.h(25) : fatal error C1903: impossible de récupérer à partir des erreurs précédentes ; arrêt de la compilation
    
    Merci Miles, et désolé de poser des questions aussi stupides...
    Et un grand merci pour ta patience...

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    En C++, il n'y a plus de typdef struct xxxx {} chose;
    On appelle directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct chose
    {
    };
     
    chose machin;

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

Discussions similaires

  1. [Debutant] Structure de programme
    Par mpascolo dans le forum Langage
    Réponses: 13
    Dernier message: 23/10/2006, 11h30
  2. [debutant] execution d'un programme java sous DOS
    Par rika dans le forum Langage
    Réponses: 13
    Dernier message: 26/10/2005, 18h27
  3. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 12h59
  4. [Debutant] execution d'un programme console
    Par benahpets dans le forum MFC
    Réponses: 8
    Dernier message: 19/05/2005, 00h19
  5. Réponses: 2
    Dernier message: 04/06/2004, 10h36

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