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

Bibliothèque standard C Discussion :

Problème de réallocation et de Assert (?)


Sujet :

Bibliothèque standard C

  1. #21
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par beegees Voir le message
    Franchement je n'en peux RIEN si le prof nous enseigne le C de cette manière là.
    En effet, à part t'en plaindre aux autorités "compétentes" (qui ne t'écouteront que si elles le sont vraiment), tu ne peux pas faire grand-chose.
    realloc s'est du C++ ?
    Non, c'est du C, et c'est même incompatible avec le système d'allocation du C++.
    Par contre, "&" dans les paramètres, c'est du C++ et ça n'a absolument rien à faire en C --> Je conseillerais de faire tout ton possible pour faire virer ton prof.
    je vous dis que je fais un cours de C depuis septembre jusque janvier, je termine cette semaine avec c et dans deux semaines je commence c++.
    Si le prof est aussi bon en C++ qu'en C, tu peux déjà t'acheter un livre de C++ et ignorer son cours...

    Si vous ne trouvez pas la réponse, ce n'est pas grave je vais chercher par moi même et si je trouve pas je demanderai au prof ce soir.
    La réponse, elle est déjà trouvée: Tu passes un pointeur non-initialisé à realloc(), et ce parce que ta fonction Officier_Initialiser() est incorrecte.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  2. #22
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par diogene Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void	Officier_Initialiser(TOfficier & Officier)
    {
    	Officier.Nom = NULL;
    Ceci étant, tu as loupé qq chose dans la suite des cours et le prof est déjà passé au C++. Ton prof, même avec la plus mauvaise foi du monde, ne peut prétendre que c'est du C (je n'ose imaginer son incompétence si il le prétendait )

    Crois-moi même si le cours se fait le soir, après une journée chargée de boulot, je peux t'assurer que je n'ai rien loupé.

    Je suis d'accord sur le fait qu'il mélange du C et du C++ et s'est ce & qui dérange, il n'y aurait pas ça, je suis sûr qu'on en verrait que du feu.

    Si je peux me permettre, j'ai analysé une xième fois mon code et voici ce que j'aperçois :

    Je créer une variable de type TOfficier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TOfficier OfficierAAjouter;
    un TOfficier s'est ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct{
    	char*	Nom;
    	TTabCompetences	Competences;
    }TOfficier;
    J'appelle ensuite une fonction d'initialisation pour ce TOfficier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Officier_Initialiser(OfficierAAjouter);
    donc voici le code de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void	Officier_Initialiser(TOfficier Officier)
    {
    	Officier.Nom = NULL;
    	TabCompetences_Initialiser(Officier.Competences); 	
    }
    oups je m'arrête là, je viens de trouver

    il manquait le & devant Tofficier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void	Officier_Initialiser(TOfficier& Officier)
    et maintenant ça fonctionne !!!

    Merci à tous pour votre aide et pour votre dévouement.

    beegees

  3. #23
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par beegees Voir le message
    il manquait le & devant Tofficier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void	Officier_Initialiser(TOfficier& Officier)
    et maintenant ça fonctionne !!!
    Pas en C en tout cas.

    Tu as bien compris que ce n'est pas du C ? Visiblement, tu compiles en C++. Le comportement est différent. C et C++ sont 2 langages différents.

    Est-ce que c'est bien clair ça ?
    Pas de Wi-Fi à la maison : CPL

  4. #24
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    C et C++ sont 2 langages différents.

    Est-ce que c'est bien clair ça ?
    euh oui

    moi pas expert comme Emmanuel mais pas c** quand même

    Aller, un grand merci à tous et à bientôt.

    beegees

  5. #25
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ca ne pose pas de problème de mélanger du C et du C++, puisque C++ est juste un sur-ensemble de C. A condition d'utiliser un compilateur C++ bien sûr...
    En 1ere année d'école on avait eu un soit-disant cours de C++, mais en fait c'était du C avec quelques emprunts à C++ (genre cin/cout, new...), et rien sur les aspects objet (le prof n'a même pas cru bon de mentionner que cin et cout sont des objets...). Je n'ai réalisé que plus tard les différences entre C et C++...

  6. #26
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Ca ne pose pas de problème de mélanger du C et du C++, puisque C++ est juste un sur-ensemble de C. A condition d'utiliser un compilateur C++ bien sûr...
    En 1ere année d'école on avait eu un soit-disant cours de C++, mais en fait c'était du C avec quelques emprunts à C++ (genre cin/cout, new...), et rien sur les aspects objet (le prof n'a même pas cru bon de mentionner que cin et cout sont des objets...). Je n'ai réalisé que plus tard les différences entre C et C++...
    Perdu. C++ n'est pas un sur-ensemble de C.
    Il est très facile d'écrire un code C qui ne compile pas en C++.

    Par contre, il est vrai qu'ils possèdent un sous-ensemble commun assez grand, et généralement suffisant pour écrire des programmes compilables dans les deux langages...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #27
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Ca ne pose pas de problème de mélanger du C et du C++, puisque C++ est juste un sur-ensemble de C. A condition d'utiliser un compilateur C++ bien sûr...
    En 1ere année d'école on avait eu un soit-disant cours de C++, mais en fait c'était du C avec quelques emprunts à C++ (genre cin/cout, new...), et rien sur les aspects objet (le prof n'a même pas cru bon de mentionner que cin et cout sont des objets...). Je n'ai réalisé que plus tard les différences entre C et C++...
    Merci de confirmer qu'il est possible de mélanger un minimum si on compile avec un compilateur C++.

    Je compile en effet avec Visual Studio 6.

    À bientôt
    beegees

  8. #28
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par beegees Voir le message
    Merci de confirmer qu'il est possible de mélanger un minimum si on compile avec un compilateur C++.
    tomlev: Tu vois ? TU VOIS ce que tu as fait ?
    Tu viens de nous PERDRE un programmeur C, le plongeant dans l'enfer du "C++ déguisé en C" et du "C compilé sur un compilateur C++" !
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #29
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    tomlev: Tu vois ? TU VOIS ce que tu as fait ?
    Tu viens de nous PERDRE un programmeur C, le plongeant dans l'enfer du "C++ déguisé en C" et du "C compilé sur un compilateur C++" !

    N'empêche, je maintiens... en général on peut mélanger. Personnellement je trouve qu'il manque beaucoup de choses en C pour en faire un langage vraiment pratique à utiliser. Je pense par exemple à ça:
    - déclaration des variables n'importe où dans le code plutôt qu'obligatoirement en début de bloc
    - passage de paramètres par référence (surtout pour les débutants qui galèrent avec les pointeurs.
    - mot-clé new pour allouer des tableaux (encore pour les débutants pour qui malloc est une source d'erreurs)
    - paramètres optionnels
    - surcharge de fonctions

    Bon, c'est surtout des détails, mais ça facilite bien la vie...

    Il est très facile d'écrire un code C qui ne compile pas en C++.
    Je veux bien te croire, mais il n'y a rien qui me vienne à l'esprit... tu aurais un exemple ?

  10. #30
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tiens, je te mets au défi de compiler ceci avec ton "superset du C"...
    Même sans le #error, tu auras des problèmes...
    Code C : 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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    #ifdef __cplusplus
    #error This file requires a C compiler
    #endif
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    extern int fpurge(FILE*);
    extern int fclean(char*, FILE*);
     
    struct class
    {
    	int classID;
    	char * className;
    };
     
    char *mystrdup(char const *str)
    {
    	char *new = NULL;
    	if(str != NULL)
    		new = malloc(strlen(str)+1);
    	if(new != NULL)
    		strcpy(new, str);
    	return new;
    }
     
    #define NBCLASS 10
    #define CLASSNAME_SIZE 64
    #define TEMPLATENAME_SIZE 32
     
    int saveTemplate(struct class const *classes, size_t n)
    {
    	(void)classes;
    	(void)n;
    	/* ... */
    	return -1;
    }
     
    int main(void)
    {
    	struct class template[NBCLASS];
    	size_t i;
    	int err=0;
     
    	for(i=0 ; i<NBCLASS ; i++)
    	{
    		template[i].classID = -1;
    		template[i].className = NULL;
    	}
     
    	printf("--- Document Template entry ---\n");
    	printf("A document template can hold up to %d classes\n", NBCLASS);
     
    	for(i=0 ; i<NBCLASS && !err ; i++)
    	{
    		int scanned;
    		int id;
    		do
    		{
    			printf("Enter id for class #%d :", (int)i);
    			fflush(stdout);
     
    			scanned = scanf("%d", &id);
    			if(fpurge(stdin) < 0) break;
    		} while(scanned != 1);
    		if(scanned != 1)
    		{
    			err = 1;
    			break;
    		}
     
    		if(id < 0) break;
     
    		{
    			struct class * class = &template[i];
    			char className[CLASSNAME_SIZE];
     
    			printf("Enter class name (max. %d chars) :", CLASSNAME_SIZE-1);
    			fflush(stdout);
    			fgets(className, CLASSNAME_SIZE, stdin);
    			fclean(className, stdin);
     
    			//Create the class
    			class->classID = id;
    			class->className = mystrdup(className);
    		}
    	}
     
    	if(!err)
    	{
    		err = saveTemplate(template, i);
    	}
     
    	for(i=0 ; i<NBCLASS ; i++)
    	{
    		free(template[i].className), template[i].className=NULL;
    	}
    	return (err ? EXIT_FAILURE : EXIT_SUCCESS);
    }
    Edit: Et voilà ce que ça donne sous Visual quand on supprime le #error
    (les numéros de lignes sont un peu fantaisistes, j'ai copié-collé le code à la suite d'un fichier source existant)
    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
    1>errors.cpp(57) : error C2332: 'struct' : missing tag name
    1>errors.cpp(58) : error C2236: unexpected 'class' '<unnamed-tag>'. Did you forget a ';'?
    1>errors.cpp(58) : error C3381: '<unnamed-tag>' : assembly access specifiers are only available in code compiled with a /clr option
    1>errors.cpp(61) : warning C4094: untagged 'class' declared no symbols
    1>errors.cpp(65) : error C2059: syntax error : 'new'
    1>errors.cpp(67) : error C2059: syntax error : '='
    1>errors.cpp(68) : error C2059: syntax error : '!='
    1>errors.cpp(69) : error C2059: syntax error : ','
    1>errors.cpp(70) : error C2059: syntax error : ';'
    1>errors.cpp(77) : error C2332: 'struct' : missing tag name
    1>errors.cpp(77) : warning C4099: '<unnamed-tag>' : type name first seen using 'class' now seen using 'struct'
    1>        errors.cpp(58) : see declaration of '<unnamed-tag>'
    1>errors.cpp(77) : error C2332: 'class' : missing tag name
    1>errors.cpp(77) : error C2236: unexpected 'class' '<unnamed-tag>'. Did you forget a ';'?
    1>errors.cpp(87) : error C2332: 'struct' : missing tag name
    1>errors.cpp(87) : warning C4099: '<unnamed-tag>' : type name first seen using 'class' now seen using 'struct'
    1>        errors.cpp(58) : see declaration of '<unnamed-tag>'
    1>errors.cpp(87) : error C2332: 'class' : missing tag name
    1>errors.cpp(87) : error C2236: unexpected 'class' '<unnamed-tag>'. Did you forget a ';'?
    1>errors.cpp(87) : warning C4094: untagged 'class' declared no symbols
    1>errors.cpp(87) : error C2143: syntax error : missing ';' before 'template'
    1>errors.cpp(87) : error C3409: empty attribute block is not allowed
    1>errors.cpp(87) : error C2143: syntax error : missing ']' before 'constant'
    1>errors.cpp(87) : error C2059: syntax error : 'constant'
    1>errors.cpp(93) : error C2337: 'i' : attribute not found
    1>errors.cpp(93) : error C2059: syntax error : '.'
    1>errors.cpp(94) : error C2337: 'i' : attribute not found
    1>errors.cpp(94) : error C2059: syntax error : '.'
    1>errors.cpp(121) : error C2332: 'struct' : missing tag name
    1>errors.cpp(121) : warning C4099: '<unnamed-tag>' : type name first seen using 'class' now seen using 'struct'
    1>        errors.cpp(58) : see declaration of '<unnamed-tag>'
    1>errors.cpp(121) : error C2332: 'class' : missing tag name
    1>errors.cpp(121) : error C2236: unexpected 'class' '<unnamed-tag>'. Did you forget a ';'?
    1>errors.cpp(121) : error C2332: 'class' : missing tag name
    1>errors.cpp(121) : error C2226: syntax error : unexpected type '<unnamed-tag>'
    1>errors.cpp(130) : error C2332: 'class' : missing tag name
    1>errors.cpp(130) : warning C4094: untagged 'class' declared no symbols
    1>errors.cpp(130) : error C2143: syntax error : missing ';' before '->'
    1>errors.cpp(130) : error C2143: syntax error : missing ';' before '->'
    1>errors.cpp(131) : error C2332: 'class' : missing tag name
    1>errors.cpp(131) : warning C4094: untagged 'class' declared no symbols
    1>errors.cpp(131) : error C2143: syntax error : missing ';' before '->'
    1>errors.cpp(131) : error C2143: syntax error : missing ';' before '->'
    1>errors.cpp(137) : error C2143: syntax error : missing ')' before 'template'
    1>errors.cpp(137) : error C2660: 'saveTemplate' : function does not take 0 arguments
    1>errors.cpp(137) : error C2059: syntax error : ')'
    1>errors.cpp(142) : error C2143: syntax error : missing ')' before 'template'
    1>errors.cpp(142) : error C2660: 'free' : function does not take 0 arguments
    1>errors.cpp(142) : error C2059: syntax error : ')'
    1>Build Time 0:00
    1>Fenetre - 39 error(s), 7 warning(s)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #31
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par beegees Voir le message
    Merci de confirmer qu'il est possible de mélanger un minimum si on compile avec un compilateur C++.

    Je compile en effet avec Visual Studio 6.

    À bientôt
    beegees
    Il n'y a pas de mélange possible. Du code C++, même s'il se limite au sous-ensemble commun entre C et C++, reste du C++ du moment qu'il est compilé avec un compilateur C++.

    Dans ton cas, tu utilises un compilateur C++ ET du ne te limite pas au sous-ensemble commun entre C et C++. Le code que tu écris n'est donc pas du C (la notion de référence n'existe pas en C) et n'a aucune chance de compiler avec un compilateur C.

    En C, ta fonction Officier_Initialiser() s'écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Officier_Initialiser(TOfficier *Officier)
    {
    	Officier->Nom = NULL;
    	/*...*/	
    }
    Je conçoit mal qu'au terme d'un cours de 5 mois sur le C, on ne puisse pas apprendre aux étudiants comment modifier correctement une variable à l'intérieur d'une fonction. Qu'il semble pratique à tel ou tel prof d'utiliser cin ou cout en lieu et place de scanf() ou printf(), je peux comprendre (encore que...), mais passer sur quelque chose d'aussi fondamental que le passage de l'adresse d'une variable en argument d'une fonction...

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  12. #32
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    @Médinoc: ben forcément, tu utilises des mots-clés C++ comme noms de variables ... tu triches :p

    Sinon, tout bien réfléchi, vous avez raison : on ne peut effectivement pas mélanger... mais on peut écrire du code "comme en C" (sans que ce soit du C au sens strict) en utilisant certaines fonctionnalités C++, avec un compilo C++. C'est ce que je voulais dire par "mélanger".

    Enfin, en tous cas ça rigole pas sur le forum C...
    Moi je retourne dans le monde merveilleux de .NET

  13. #33
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par tomlev Voir le message
    @Médinoc: ben forcément, tu utilises des mots-clés C++ comme noms de variables ... tu triches :p
    Pas seulement:
    J'ai aussi utilisé le cast implicite de pointeur générique, et utilisé un nom de structure comme nom de variable...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #34
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Ca ne pose pas de problème de mélanger du C et du C++, puisque C++ est juste un sur-ensemble de C.<...>
    Euh, non.

    http://david.tribble.com/text/cdiffs.htm
    Pas de Wi-Fi à la maison : CPL

  15. #35
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par beegees Voir le message
    Merci de confirmer qu'il est possible de mélanger un minimum si on compile avec un compilateur C++.
    Pas du tout. On ne peut rien mélanger du tout, à moins d'être un expert dans les deux langages et de connaitre exactement et de manière portable, quel est exactement le sous-ensemble commun.
    Je compile en effet avec Visual Studio 6.
    Mais VS6 permet aussi de compiler en C (question de configuration du projet ou des sources, je en sais plus).. ce qui t'éviterais de compiler du C en C++, ce qui invoque un comportement indéfini, les règles étant différentes. Tout peut arriver.

    Mais si tu tiens au C++, c'est pas un problème, mais tu te trompes de forum. Ici, on parle du C et surtout, on compile en C.
    Pas de Wi-Fi à la maison : CPL

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/12/2014, 22h24
  2. [rad 6]problème utilisation assert
    Par link256 dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 1
    Dernier message: 30/07/2008, 15h17
  3. Problème de réallocation de la mémoire
    Par dot-_-net dans le forum C++
    Réponses: 16
    Dernier message: 18/05/2008, 23h18
  4. Problème avec Assert
    Par Seb981 dans le forum Prolog
    Réponses: 16
    Dernier message: 20/05/2007, 17h39

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