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 :

ce que l'on peut faire en C mais pas en C++


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut ce que l'on peut faire en C mais pas en C++
    Salut,

    je me suis toujours posé cette question, et je n'ai jamais trouvé de réponse. Ici (enfin, sur le forum d'à côté, ici je sais pas ) on a plutôt tendance à dire que le C++ est vraiment différent du C; que ce n'est pas une simple "surcouche".

    Mais je sais pas, ce n'est peut-être pas si évident. C'est pourquoi je me suis demandé: qu'est-ce qu'on peut faire en C mais qu'on ne peut pas faire en C++?

    Posé autrement: Quel code concret sera valide en C, mais qui ne sera pas compilé par un compilo C++?

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 477
    Par défaut
    Nicolas Sitbon ayant donné la réponse la plus pertinente que l'on puisse à ce post, on peut se permettre de gloser un peu sur les détails. :-)

    Citation Envoyé par r0d Voir le message
    On a plutôt tendance à dire que le C++ est vraiment différent du C; que ce n'est pas une simple "surcouche".
    Je trouve personnellement qu'on le dit un peu trop, à tel point qu'il devient difficile d'exposer un point de vue ne serait-ce que légèrement différent pour en débattre, sans se faire incendier et déclencher un troll.

    Certes, il arrive un moment où il faut rompre avec le passé, mais cette approche servait surtout à le faire faire. Aujourd'hui, à asséner sans arrêt ce genre de propos, on fait croire aux étudiants débutants qu'il y a autant de différences entre le C et le C++ qu'il y en a entre l'ADA et le Perl.

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Et naturellement sur le site de DVP : Les incompatibilités entre le C et le C++

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    A noter qu'il existe aussi des cas où, au contraire, il est rentable (voire nécessaire !!) d'écrire un code source qui soit compilé à l'identique en C comme en C++...

    Le cas le plus courant que j'ai eu à rencontrer justifiant ceci est l'implémentation d'un protocole spécifique, ou de structures communes, entre un PC (code fréquemment en C++) et un microcontrôleur (où il y a rarement autre chose que du C plus ou moins bien normé). Dans un tel cas, limiter son utilisation des langages au sous-ensemble commun entre le C et le C++ permet d'éviter pas mal de pièges agaçants, en liste non-exhaustive :
    • Modification du code d'une des machines avec oubli de répercussion sur l'autre (régressions),
    • Erreurs de links entre C et C++, avec ou sans soucis de décoration,
    • Oubli de réglage du compilateur qui compile en C un code C++ (ou le contraire) avec trois tonnes d'erreurs,
    • Gestion correcte de l'endianness, vu que l'on est obligé de penser aux deux cibles en même temps,
    • Portabilité bien plus élevée du source (et donc flexibilité sur quelles machines seront client/serveur), y compris sur des compilateurs C que l'on qualifiera pudiquement comme "exotiques"...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Pour répondre directement à "ce que l'on peut faire en C mais pas en C++":

    Programmer pour des cibles qui n'ont pas de C++. Hé oui, il y a une vie en dehors du développement PC. Mais il y a pire: Programmer en assembleur pour les cibles qui n'ont pas de C...

    A+

    Pfeuh

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    En dehors des codes qui ne compilent pas, je ne pense pas qu'il y ait grand-chose de possible en C qui soit vraiment impossible en C++. Sauf peut-être certaines tricheries comme des variables globales qui sont déclarées constantes dans certains fichiers sources et non-constantes dans d'autres (oui, il m'est arrivé de voir ça). Et encore, en spécifiant un linkage C ça doit passer.

    Bien sûr, écrire en C∩C++ n'est pas bien difficile, et peut être rendu plus pratique ou plus propre par l'utilisation de macros (pour les casts par exemple, ou voir aussi les interfaces COM). Il faut juste un peu de rigueur.
    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.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2010, 13h55
  2. [SPAD]Est-ce que quelqu'un peut faire tourner SPAD(je n'ai pas le logiciel)?
    Par Misspatate dans le forum Autres outils décisionnels
    Réponses: 0
    Dernier message: 01/06/2009, 14h35
  3. Ce que mon DNS peut faire ?
    Par thegritch dans le forum Apache
    Réponses: 1
    Dernier message: 01/07/2008, 16h27
  4. Est-ce que l'on peut faire des thread en php?
    Par Yoteco dans le forum Langage
    Réponses: 3
    Dernier message: 11/01/2007, 11h43

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