Voici les avantages du C ++
- C ++ fournit les fonctionnalités spécifiques qu'ils demandent
- Leur compilateur C est presque certainement un compilateur C ++, il n'y a donc aucune implication sur les coûts logiciels
- C ++ est tout aussi portable que C
- Le code C ++ peut être tout aussi efficace que C (ou plus ou moins)
Y a-t-il des raisons concrètes et des scénarios spécifiques où il faut utiliser C plutôt que C ++?
Référence à cette question: Bibliothèque de génériques en C
Pas un doublon, car cette question porte sur les limites de la langue et non sur le devrait / ne devrait pas apprendre une langue plutôt qu'une autre.
Le post de Peter Kirkham a été pour moi le plus informatif, en particulier en ce qui concerne les questions C99 que je n'avais pas envisagées, donc je l'ai accepté. Merci à tous les autres qui ont participé.
Réponses:
C est un langage de programmation complet. C n'est pas un sous-ensemble arbitraire de C ++. C n'est pas du tout un sous-ensemble de C ++.
Ceci est valide C:
Pour le faire compiler en C ++, vous devez écrire:
ce qui n'est plus valide C. (vous pouvez utiliser le cast de style C, dans ce cas, il compilerait en C, mais serait évité par la plupart des normes de codage C ++, ainsi que par de nombreux programmeurs C; voyez les commentaires "don't cast malloc" partout dans Stack Overflow) .
Ce ne sont pas la même langue, et si vous avez un projet existant en C, vous ne voulez pas le réécrire dans une autre langue juste pour utiliser une bibliothèque. Vous préférez utiliser des bibliothèques avec lesquelles vous pouvez vous connecter dans la langue dans laquelle vous travaillez. (Dans certains cas, cela est possible avec quelques
extern "C"
fonctions d'encapsuleur, selon la façon dont est modèle / intégré une bibliothèque C ++.)Prendre le premier fichier C dans un projet sur lequel je travaille, ce qui arrive si vous venez échange
gcc std=c99
pourg++
:Au total 69 lignes d'erreurs, dont quatre sont des conversions non valides, mais principalement pour des fonctionnalités qui existent en C99 mais pas en C ++.
Ce n'est pas comme si j'utilisais ces fonctionnalités pour le plaisir. Il faudrait un travail considérable pour le porter dans une autre langue.
Il est donc tout à fait faux de suggérer que
Le portage du code C existant vers le sous-ensemble procédural de C ++ a souvent des implications financières importantes.
Donc, suggérer 'utiliser la classe C ++ std :: queue' comme réponse à la question de recherche d'une implémentation de bibliothèque d'une file d'attente en C est dafter que de suggérer 'utiliser l'objectif C' et 'appeler la classe Java java.util.Queue en utilisant JNI' ou 'appeler la bibliothèque CPython' - Objective C est en fait un sur-ensemble approprié de C (y compris C99), et les bibliothèques Java et CPython peuvent être appelées directement à partir de C sans avoir à porter du code non lié au langage C ++.
Bien sûr, vous pouvez fournir une façade C à la bibliothèque C ++, mais une fois que vous le faites, C ++ n'est pas différent de Java ou Python.
la source
Je me rends compte que ce n'est ni une réponse professionnelle ni une bonne réponse, mais pour moi c'est simplement parce que j'aime vraiment C.C est petit et simple et je peux insérer tout le langage dans mon cerveau, C ++ m'a toujours semblé être un énorme désordre tentaculaire avec toutes sortes de couches, j'ai du mal à grokking. Pour cette raison, je trouve que chaque fois que j'écris en C ++, je finis par passer beaucoup plus de temps à déboguer et à me cogner la tête contre des surfaces dures que lorsque je code C. Encore une fois, je me rends compte que cela est en grande partie le résultat de ma propre «ignorance».
Si je peux choisir, j'écrirai tous les éléments de haut niveau comme l'interface et l'interaction de la base de données en python (ou peut-être C #) et tout ce qui doit être rapide en C. Pour moi, cela me donne le meilleur de tous les mondes. Tout écrire en C ++ donne l'impression de tirer le pire de tous les mondes.
Edit: Je voudrais ajouter que je pense que C avec quelques fonctionnalités C ++ est en grande partie une mauvaise idée si vous allez être plusieurs personnes travaillant sur un projet ou si la maintenabilité est la priorité. Il y aura désaccord sur ce qui constitue un «quelques» et quels bits devraient être faits en C et quels bits en C ++ conduisant finalement à une base de code très schizophrène.
la source
C ++ n'est tout simplement pas pris en charge dans certains environnements du monde réel, comme les systèmes embarqués de bas niveau. Et il y a une bonne raison à cela: C assez bien pour de telles choses, alors pourquoi utiliser quelque chose de plus grand?
la source
Je déteste la programmation en C ++.
la source
Quelques raisons pourraient être:
Je préfère toujours écrire en C ++ quand je peux m'en tirer, et dans l'ensemble, je pense que les avantages l'emportent sur les inconvénients. Mais je peux aussi voir l'argument pour utiliser C dans certains cas.
la source
Il y a beaucoup d'arguments sur la programmation embarquée, les performances et tout, je ne les achète pas. C ++ se compare facilement à C dans ces domaines. Toutefois:
Tout récemment, après avoir programmé en C ++ pendant plus de 15 ans, j'ai redécouvert mes racines C. Je dois dire que s'il existe de bonnes fonctionnalités en C ++ qui facilitent la vie, il y a aussi un tas de pièges et une sorte de "il y a toujours une meilleure façon de faire les choses". Vous n'êtes jamais vraiment satisfait de la solution que vous avez apportée. (Ne vous méprenez pas, cela pourrait être une bonne chose, mais surtout pas).
C ++ vous donne des coups de feu infinis. Ce qui pourrait être bon, mais d'une manière ou d'une autre, vous finissez toujours par en utiliser trop. Cela signifie que vous déguisez vos solutions avec des couches d'abstractions «sympas» et «jolies», de généralité, etc.
Ce que j'ai découvert en retournant à C, c'est que c'était à nouveau une programmation amusante. Ayant passé tant de temps à modéliser et à réfléchir à la meilleure façon d'utiliser l'héritage, je trouve que la programmation en C rend mon code source plus petit et plus lisible. Cela dépend bien sûr de votre niveau d'auto-discipline. Mais il est très facile de mettre trop d'abstractions sur du code simple, ce qui n'est jamais vraiment nécessaire.
la source
infinite gunfire
, ooh ouais, si vrai. Nos pieds tremblent littéralement :)C a le principal avantage que vous pouvez simplement voir ce qui se passe réellement lorsque vous regardez un morceau de code (ouais préprocesseur: compilez avec -E et ensuite vous le voyez). Quelque chose qui est trop souvent faux lorsque vous regardez du code C ++. Là, vous avez des constructeurs et des destructeurs qui sont appelés implicitement en fonction de la portée ou en raison d'affectations, vous avez une surcharge d'opérateurs qui peut avoir un comportement surprenant même si elle n'est pas mal utilisée. J'admets que je suis un maniaque du contrôle, mais j'en suis venu à la conclusion que ce n'est pas une si mauvaise habitude pour un développeur de logiciel qui veut écrire un logiciel fiable. Je veux juste avoir une chance de dire que mon logiciel fait exactement ce qu'il est censé faire et ne pas avoir une mauvaise sensation dans l'estomac en même temps parce que je sais qu'il pourrait encore y avoir tellement de bogues que je ne le ferais pas.
C ++ a également des modèles. Je les déteste et les aime, mais si quelqu'un dit qu'il ou elle les comprend parfaitement, je l'appelle un menteur! Cela inclut les rédacteurs du compilateur ainsi que les personnes impliquées dans la définition du standard (ce qui devient évident lorsque vous essayez de le lire). Il y a tellement de cas de coin absurdement trompeurs impliqués qu'il est tout simplement impossible de les considérer tous pendant que vous écrivez du code réel. J'adore les modèles C ++ pour leur puissance. C'est vraiment incroyable ce que vous pouvez faire avec eux, mais ils peuvent également conduire aux erreurs les plus étranges et les plus difficiles à trouver que l'on puisse (ne pas) imaginer. Et ces erreurs se produisent réellement et pas même rarement. La lecture des règles impliquées pour résoudre les modèles dans le C ++ ARM fait presque exploser ma tête. Et cela me donne le mauvais sentiment de perdre du temps à lire des messages d'erreur du compilateur de plusieurs 1000 caractères pour lesquels j'ai déjà besoin de 10 minutes ou plus pour comprendre ce que le compilateur veut réellement de moi. Dans le code C ++ (bibliothèque) typique, vous trouvez également souvent beaucoup de code dans les fichiers d'en-tête pour rendre certains modèles possibles, ce qui rend les cycles de compilation / exécution douloureusement lents même sur des machines rapides et nécessite la recompilation de grandes parties du code lorsque vous changez quelque chose Là.
C ++ a également le trap const. Soit vous évitez const pour tous, sauf les cas d'utilisation les plus triviaux, soit vous devrez tôt ou tard le rejeter ou refactoriser de grandes parties de la base de code lorsqu'elle évolue, en particulier lorsque vous êtes sur le point de développer une conception OO agréable et flexible.
C ++ a un typage plus fort que C, ce qui est génial, mais parfois j'ai l'impression de nourrir un Tamagotchi lorsque j'essaye de compiler du code C ++. Une grande partie des avertissements et des erreurs que je reçois généralement ne sont pas vraiment moi qui fais quelque chose qui ne fonctionnerait pas, mais juste des choses que le compilateur n'aime pas que je fasse de cette façon ou non sans lancer ou mettre des mots-clés supplémentaires ici et Là.
Ce ne sont là que quelques-unes des raisons pour lesquelles je n'aime pas C ++ pour les logiciels que j'écris seul en utilisant uniquement des bibliothèques externes prétendument robustes. La véritable horreur commence lorsque vous écrivez du code en équipe avec d'autres personnes. Peu importe qu'il s'agisse de hackers C ++ très intelligents ou de débutants naïfs. Tout le monde fait des erreurs, mais C ++ rend délibérément difficile leur recherche et encore plus difficile de les repérer avant qu'elles ne surviennent.
Avec C ++, vous êtes simplement perdu sans utiliser de débogueur tout le temps mais j'aime pouvoir vérifier l'exactitude de mon code dans ma tête et ne pas avoir à compter sur un débogueur pour trouver mon code fonctionnant sur des chemins que je n'aurais jamais anticipés. J'essaie en fait d'exécuter tout mon code dans ma tête et d'essayer de prendre toutes les branches qu'il a, même dans les sous-programmes, etc. Écrire et exécuter tant de cas de test que tous les chemins de code ont été utilisés dans toutes les combinaisons avec toutes sortes de données d'entrée étranges est tout simplement impossible. Vous ne connaissez peut-être pas les bogues des programmes C ++, mais cela ne veut pas dire qu'ils ne sont pas là. Plus un projet C ++ est volumineux, moins je suis convaincu qu'il n'aura pas beaucoup de bogues non détectés, même s'il fonctionne parfaitement avec toutes les données de test dont nous disposons. Finalement, je le détruis et recommence avec une autre langue ou une combinaison d'autres langues.
Je pourrais continuer mais j'imagine que j'ai déjà clarifié mon point de vue. Tout cela m'a fait me sentir improductif lorsque je programme en C ++ et m'a fait perdre confiance en l'exactitude de mon propre code, ce qui signifie que je ne l'utiliserai plus, alors que j'utilise et compte toujours sur du code C que j'ai écrit plus de 20 il y a des années. Peut-être que c'est simplement parce que je ne suis pas un bon programmeur C ++, ou peut-être que le fait d'être assez bon en C et dans d'autres langages me permet de reconnaître à quel point je suis en fait quand il s'agit de C ++, et que je ne pourrai jamais le comprendre pleinement .
La vie est courte...
la source
Dans un environnement embarqué de bas niveau, certains "ingénieurs logiciels" auront une formation en EE et maîtriseront à peine C. Le C ++ est plus complexe et certains de ces types ont simplement peur d'apprendre un nouveau langage. Ainsi, C est utilisé comme le plus petit dénominateur commun. (Avant de suggérer de se débarrasser de ces gars, ils sont au moins aussi importants que les majors CS qui ne comprennent pas les trucs analogiques hardcore.)
Parlant d'expérience pour avoir hérité et maintenu les deux: un design horrible en C est difficile à comprendre, à dérouler et à refactoriser en quelque chose d'utilisable.
Une conception horrible en C ++ est infiniment pire car des couches aléatoires d'abstraction envoient votre cerveau à fouiller dans la base de code en essayant de déterminer quel code va être exécuté dans quelles circonstances.
Si je dois travailler avec des ingénieurs qui, je le sais, ne produiront pas de superbes designs, je préfère de loin le premier plutôt que le second.
la source
Je ne vois aucune autre raison que l'aversion personnelle, même pour la programmation de systèmes embarqués et autres choses similaires. En C ++, vous ne payez les frais généraux que pour les fonctionnalités que vous utilisez. Vous pouvez utiliser le sous-ensemble C du C ++ dans certaines situations spécifiques où la surcharge C ++ est trop élevée pour vous. Cela dit, je pense que certains programmeurs C surestiment la surcharge de certaines constructions C ++. Permettez-moi de citer quelques exemples:
Une raison valable serait lorsque vous programmez pour une plate-forme qui n'a pas de compilateur C ++ décent (aucun compilateur C ++, ou un compilateur existe, mais est mal implémenté et impose une surcharge inutile pour certaines fonctionnalités C ++).
la source
Pourquoi limiter la parole en anglais? Peut-être seriez-vous un auteur plus créatif en serbe.
C'est le même argument, avec des erreurs évidentes. Si vous avez une tâche et que vos outils confortables la résolvent efficacement, vous utiliserez probablement vos outils confortables pour une bonne raison.
la source
C ++ a une courbe d'apprentissage beaucoup plus longue. C n'a que quelques constructions dont vous devez être conscient et vous pouvez ensuite commencer à coder un logiciel puissant. En C ++, vous devez apprendre la base C, puis la programmation OO et générique, les exceptions, etc. Et après un certain temps, vous pouvez connaître la plupart des fonctionnalités et vous pouvez les utiliser, mais vous ne savez toujours pas comment le compilateur va les traduire, quels frais généraux implicites ils ont ou non. Cela prend beaucoup de temps et d'énergie.
Pour un projet professionnel, cet argument peut ne pas compter, car vous pouvez employer des personnes qui connaissent déjà très bien le C ++. Mais dans les projets Open Source, où C est toujours largement utilisé, les gens choisissent le langage qu'ils aiment et ils peuvent l'utiliser. Considérez que tous les programmeurs OS ne sont pas des programmeurs professionnels.
la source
J'aimerais revenir sur la réponse de Dan Olson. Je crois que les gens craignent les fonctionnalités potentiellement dangereuses et contre-productives du C ++, et à juste titre. Mais contrairement à ce que dit Dan, je ne pense pas que le simple fait de décider d'une norme de codage soit efficace, pour deux raisons:
Je pense que la deuxième raison est ici beaucoup plus importante que la première, car le choix d’une norme de codage peut facilement devenir une question politique et faire l’objet d’une révision ultérieure. Prenons le cas simplifié suivant:
(L'alternative selon laquelle la norme n'est pas révisée à l'étape 3 est empiriquement trop improbable à considérer et ne serait pas beaucoup mieux de toute façon.)
Même si j'avais l'habitude d'utiliser C ++ pour à peu près tout il y a quelques années, je commence à sentir fortement que C est préférable dans les tâches de bas niveau qui doivent être gérées par C ou C ++ et tout le reste devrait être fait dans un autre langue entièrement. (Seules les exceptions possibles étant certains domaines problématiques spécifiques à hautes performances, par exemple Blitz ++ )
la source
J'utilise C, ou au moins j'exporte une interface C lorsque j'écris du code de bibliothèque.
Je ne veux pas de tracas ABI mal définis.
la source
Je n'ai jamais vu d'arguments pour utiliser C sur C ++ que je considérerais comme convaincant. Je pense que la plupart des gens ont peur de certaines fonctionnalités offertes par C ++, souvent à juste titre. Pourtant, cela ne me convainc pas car on peut imposer l'utilisation ou non de certaines fonctionnalités par le biais de normes de codage. Même en C, il y a beaucoup à éviter. Abandonner complètement C ++ signifie essentiellement qu'il n'offre aucun avantage tangible par rapport au C qui aiderait à écrire un meilleur code, ce qui est une vue que je considère comme assez ignorante.
De plus, les gens semblent toujours soulever la situation des plates-formes où aucun compilateur C ++ n'existe. Certes, C serait approprié ici, mais je pense que vous auriez du mal à trouver une plate-forme comme celle-ci ces jours-ci.
la source
Un point que je n'ai pas encore vu soulevé, qui je pense est le plus important:
La plupart des bibliothèques que j'utilise quotidiennement sont des bibliothèques C avec des liaisons pour Python, Ruby, Perl, Java, etc. D'après ce que j'ai vu, il est beaucoup plus facile d'encapsuler des bibliothèques C avec 19 liaisons de langage différentes que wrapper les bibliothèques C ++.
Par exemple, j'ai appris le Caire une fois, et je l'ai depuis utilisé dans 3 ou 4 langues différentes. Grande victoire! Je préfère écrire un programme qui pourra être réutilisé dans le futur, et en écrire un qui puisse facilement être adopté dans d'autres langages de programmation en est un cas extrême.
Je sais qu'il est possible de lier des bibliothèques C ++, mais AFAICT ce n'est pas la même chose. J'ai utilisé Qt (v3 et v4) dans d'autres langues et ce n'est pas aussi agréable à utiliser: ils ont envie d'écrire du C ++ dans un autre langage, pas comme des bibliothèques natives. (Vous devez passer les sigs de la méthode C ++ sous forme de chaînes!)
C ++ est probablement un meilleur langage si vous écrivez une fonction à utiliser une fois, ou si vous pensez que tout le monde est C ++. C semble être un langage plus facile si vous concevez dès le départ pour la portabilité des langues.
la source
Le développement du noyau Windows ne prend pas en charge C ++ (malheureusement).
la source
Vous pouvez lire une diatribe divertissante sur les raisons pour lesquelles Linus Torvalds favorise C ici
la source
Le code natif sur un mac est objective-c. Le code natif sur un PC est c (window.h) ou c ++ (mfc). Ces deux environnements vous permettront d'utiliser c avec peu ou pas de changements. Quand je veux qu'une bibliothèque de code soit multiplateforme, ansi c semble être un bon choix.
la source
Je peux penser à plusieurs raisons.
Il se peut qu'il n'y ait pas de compilateur C ++ satisfaisant. C ++ est un langage beaucoup plus volumineux et j'ai exécuté des compilateurs C sur des systèmes qui ne seraient pas capables de gérer le C ++ moderne.
Le questionneur, ou les personnes avec lesquelles il travaille, peut être familier avec C mais pas C ++.
Le projet peut être en C. Bien qu'il soit possible d'ajouter des fonctionnalités C ++ à C, cela peut facilement conduire à un désordre impossible à maintenir. Je suggérerais de choisir une langue ou une autre (généralement C ++, lorsque cela est pratique).
Le questionneur peut avoir une vue obsolète de la courbe d'apprentissage de C ++. (Lorsqu'il est abordé correctement, c'est plus facile que celui de C. La plupart des livres d'introduction que j'ai vus ne l'abordent pas correctement.)
N'oubliez pas que C et C ++ sont deux langages différents et qu'ils deviennent de plus en plus différents avec le temps. Coder dans les deux à la fois est une mauvaise idée, et l'utilisation d'un sous-ensemble de type C de C ++ manque la plupart des avantages de C ++.
la source
Si vous travaillez dans un environnement avec deux langages, vous pouvez utiliser C pour certaines fonctions de bas niveau critiques pour les performances et un langage plus fonctionnel / de haut niveau comme C # / Java pour la logique métier. Si du code C ++ est utilisé pour ces fonctions, des C-Wrappers sont requis pour le code JNI / non managé, ce qui rend les choses plus complexes que l'utilisation de C.
la source
J'utilise C ++ avec la programmation C pour deux raisons:
vector
etstring
pour me débarrasser de la gestion de la mémoire du tableauC'est donc C qui emprunte vraiment quelques C ++ mais utilise le compilateur C ++ autant que je peux. Comme quelqu'un d'autre le dit dans les réponses, je trouve que maintenant je prends plus de C ++ de cette façon et là où C serait trop impliqué, j'utilise C ++. Surveiller / verrouiller à l'aide de RAII est l'un de ceux que j'ai récemment utilisés pour traiter des programmes multithreads et une autre construction similaire pour ouvrir / fermer des fichiers.
la source
Je pense que C est plus portable. J'ai travaillé il y a environ 5 ans en portant du code sur de nombreuses versions d'Unix (AIX, Irix, HPUX, Linux). Le code C était facile à porter, mais nous avons eu divers problèmes de portage d'une partie du code C ++. C'était peut-être juste des environnements de développement immatures, mais je préférerais de loin utiliser C plutôt que C ++ pour cette raison ...
la source
C est un langage simple, C ++ ne l'est pas. Pour beaucoup de gens, C ++ est tout simplement trop compliqué pour être entièrement maîtrisé, voir http://en.wikipedia.org/wiki/C%2B%2B#Criticism .
En raison de la complexité, différents programmeurs ne maîtrisent généralement que différents sous-ensembles du langage. Cela rend la lecture du code des autres douloureuse.
La complexité, les pièges de la langue ajoutent trop de distraction et nuisent parfois à la productivité. Au lieu de me concentrer sur le travail lui-même, je me suis souvent retrouvé à me battre avec la langue elle-même. Java / python sont des alternatives plus productives.
Le débogage d'un code C cassé est généralement beaucoup plus simple que le débogage d'un code C ++ cassé.
Contrairement à Java / C #, la bibliothèque standard C ++ ne dépasse guère la portée de la bibliothèque standard C.
Certains programmeurs célèbres comme Linus Torvalds (Linux) et Richard Stallman (Emacs) n'aiment pas le C ++.
la source
La plupart des programmeurs tiennent pour acquis que tout le monde considère la qualité comme une priorité. Ce n'est pas toujours le cas. Si vous êtes habitué au C, le C ++ peut sembler en faire trop pour vous dans les coulisses. La rigueur de la vérification de type en C ++ peut également sembler restrictive. Beaucoup de gens sont prêts à risquer d'introduire les types de bogues que C ++ peut aider à éviter pour éviter ces «nuisances».
la source
Il y a trois raisons auxquelles je peux penser. La première est que C est plus adapté aux systèmes embarqués, en raison de la petite taille de ses binaires et de la plus grande disponibilité des compilateurs C sur n'importe quel système. Le second est la portabilité: C est un langage plus petit et le code ANSI C se compilera n'importe où. Il est plus facile de briser la portabilité en C ++. Le dernier est la langue elle-même. Le C ++ est plus difficile et est certainement un langage très mal conçu. Les plaintes de Torvalds sont rapportées ci-dessus. Vous pouvez également consulter les réponses aux questions fréquemment posées sur le C ++ ( http://yosefk.com/c++fqa/ ).
la source
La portabilité peut être un problème. Contrairement à la réponse de Gordon Carpenter-Thomp, je suggérerais qu'il s'agit plutôt du support d'exécution de différentes versions de libstdc ++ sur différentes versions Linux / Unix. Voir ce lien pour une bonne discussion à ce sujet. Un petit extrait:
la source
Je peux suivre ici de nombreuses suggestions dans les deux sens. Mais en fin de compte, cela revient à a) un complexe comparable simple b) comparable.
Je ne sais pas si quelqu'un a "inventé" une sorte de mesure de la complexité du langage.
Sur une échelle de 0 à 10, j'évaluerais probablement C à 2 ou 3 alors que C ++ serait entre 8-10. Je dirais que C ++ est l'un des langages les plus complexes, mais je ne sais pas par exemple Ada, PL1 ou autre, donc peut-être que ce n'est pas si complexe en comparaison à un autre langage.
C ++ hérite de toute la complexité de C donc il ne peut pas être en dessous du niveau de complexité de C.
Pour ma part, je serais beaucoup plus à l'aise d'utiliser un langage de script et C. Donc, à la fin, il faut répondre à la question suivante. "Est-ce toujours mieux?"
la source
La chose la plus utile que j'ai trouvée en C est le manque d'espaces de noms et de surcharges: les noms de fonctions et de symboles sont des identifiants uniques. Pour trouver les endroits où ces symboles sont utilisés, vous pouvez simplement
grep
parcourir les fichiers de code source et les résultats de la recherche afficheront les emplacements.C'est essentiel lors du câblage d'une nouvelle fonction ou d'un nouveau composant à un ancien système enchevêtré.
Vous ne pouvez pas faire cela facilement en C ++, sans un outil sophistiqué de création de graphe d'appel.
la source
La plupart des gens semblent penser que C et C ++ sont en quelque sorte liés, mais ils se trompent malheureusement. C ++ est un langage complètement différent de C.
En C ++, vous pensez en termes d'objets et comment ils sont liés les uns aux autres. En C, vous pensez en termes d'API. C'est comme la différence entre le jour et le 17.
Une mauvaise analogie: si quelqu'un ajoute du chinois à l'anglais et l'appelle anglais ++, vous ne vous sentirez probablement pas à l'aise d'ajouter une ligne chinoise à votre dernière lettre d'amour, car il est tellement plus facile d'exprimer l'amour dans cette partie de l'anglais ++.
la source
Voici toutes les raisons pour lesquelles il peut être avantageux de limiter un projet à C:
la source