web-dev-qa-db-fra.com

C a-t-il des cours?

D'accord, vous pouvez m'appeler un noob mais je suis confus.

Mon ex-camarade m'a payé pour écrire un programme en C. Elle m'a confié cette tâche et elle disait: "blah blah blah make au moins deux classes , écris au moins un constructeur et réécris au moins une méthode "il dit que mot par mot.

Et puis je lui ai dit "c'est C++ pas C" dit-elle "mais nous apprenons C"

Je l'ai ignoré et j'ai écrit le programme en c ++ et je l'ai envoyé car je pensais qu'elle ne savait pas de quoi elle parlait. Elle a dit "ça ne marche pas sur les blocs de code, et wtf est cout <<" et ensuite elle m'a envoyé un morceau de code qu'ils ont écrit et au lieu de cout et cin, il y avait printf et scanf. Il fallait que ce soit C. Donc, j'ai réécrit le programme avec printf et scanf et elle dit toujours que codeblocks jette des erreurs (j'ai encore laissé des classes comme tâche demandée).

C a des cours? Ou y a-t-il un malentendu ou quelque chose?

14
Vanilla Face

Non, C n'a pas de cours. Cela dit, il existe des moyens de simuler une programmation orientée objet en C: une recherche rapide dans Google devrait produire des résultats utiles.

25
Stuart Golodetz

Non, C n'a pas de classe en elle-même, seulement C++ (qui a commencé comme "C avec les classes" à l'époque ...). Mais vous pouvez utiliser la bibliothèque C standard en code C++, même si cela n’est souvent pas considéré comme une bonne pratique (où C++ a ses propres constructions de niveau supérieur, par exemple cout vs printf).

Vous pouvez également émuler le comportement des classes, de l'héritage et des fonctions virtuelles en C, mais cela ne vaut pas la peine.

Vous devriez probablement acheter/obtenir un livre de programmation en C pour votre ex-camarade de classe :-)

8
Péter Török

C n'a pas de cours.

Mais on peut approcher une classe en utilisant des globales statiques en tant que membres de classe privés et des fonctions statiques en tant que fonctions membres privées. membres externes en tant que public. Dans ce cas, un fichier entier peut être visualisé en tant que classe.

Ce n'est probablement pas ce que vous voulez.

2
phoxis

C n'a pas la structure formelle d'une classe. Vous pouvez produire des modules avec des données au niveau du module qui, selon votre accord, ne seront externalisés nulle part ailleurs, ou des données statiques, et écrire des fonctions pour obtenir, définir et manipuler ces données. Vous pouvez même aller au point d’utiliser des pointeurs de fonction pour manipuler des types de données similaires comme s’ils se trouvaient dans une classe.

Cependant, vous ne serez pas protégé par la sémantique des classes ou d'autres règles par le compilateur C, car celui-ci ne connaît pas les classes. Cependant, la structuration de vos données est assez puissante.

2
octopusgrabbus

C n'a pas de classes, mais vous pouvez l'émuler avec des structures et des pointeurs vers une fonction. C99 est un peu (juste un peu) basé sur C++, il est donc facile de reproduire des classes avec C.

0
md5

Un cas classique d'exigences contradictoires, il semble :-)

La terminologie de ses exigences CLASS, CONSTRUCTOR, METHOD est une terminologie C++, alors qu’aucune d’entre elles n’est la terminologie C (la plus proche de celles-ci serait STRUCT, INITIALIZATION, FUNCTION). Votre ami est confondre quelque chose ici. Je doute que son professeur confonde quelque chose, cependant ...

0
Jens