Environnement de développement pour C


10

Recherche d'idées sur la mise en place d'un environnement de développement pratique et productif pour le développement C. J'ai trouvé l' édition C avec Vim très utile, mais j'aimerais obtenir un échantillon plus large de suggestions.


@txwikinger D'accord, je ne voulais tout simplement pas être le premier de la police CW ici :). Ou celui pour créer la balise [subjective], qui doit mourir d'une mort douloureuse
Michael Mrozek

Il y a déjà des wikis communautaires. Donc, pas d'excuse :) Et j'ai créé la balise subjective, donc tous vos soucis ont disparu. Veuillez consulter le wiki de la communauté maintenant :)
txwikinger

@txwikinger C'est en fait découragé maintenant, donc je l'ai supprimé de tous les messages qui l'avaient
Michael Mrozek

Réponses:


12
  • Emacs / Vim / Eclipse / ... - Personnellement, je suis un utilisateur Emacs. Si vous trouvez que les séquences de contrôle fatiguent votre petit doigt, il vous suffit de le mode Viper. Emacs est si bien intégré dans unix, ce qui rend très facile tout contrôler depuis un seul endroit. Vim fait également du bon travail ici, mais je trouve qu'Elisp est un langage d'extension beaucoup plus puissant que Vim Script. On pourrait parler pendant des heures de toutes les façons de configurer Emacs pour le développement C. Le mode Flymake a été mentionné et constitue un excellent début. Je ne suis pas familier avec Eclipse, je ne trouve pas qu'il laisse suffisamment de place sur mon écran pour le code, et je n'aime pas non plus à quel point il est gonflé (les utilisateurs de Vim diront la même chose à propos d'Emacs). Je suis également injustement biaisé contre tout ce qui est écrit en Java, pour des raisons purement esthétiques.

  • Ctags - Balise vos fonctions C (ou de nombreux autres langages) afin que Vim ou Emacs ou quoi que ce soit puisse faire un peu de lien hypertexte dans vos fichiers. Supposons que vous vous promeniez et que vous voyiez une fonction et que vous vous grattiez la tête en disant: "Que fait encore celle-ci? Le nom est un peu vague." Plink-plank-plunk, vous pouvez zapper directement sur sa définition.

  • Cmake / Gnu-Autotools - Make est génial, mais à un moment donné, vous devez un peu résumer les choses pour que votre projet puisse se construire sur toutes sortes de systèmes que vous n'avez aucun moyen de tester. Si vous avez seulement besoin de personnes pour construire votre code sur un * nix, Autotools est génial, mais, vraiment, vous devriez vous familiariser avec Cmake de toute façon. L'équipe Cmake construit du code dans toutes les configurations imaginables possibles et s'assure que vous n'avez pas à passer par le casse-tête. Si vous souhaitez que votre projet soit facilement repris, achetez-en d'autres, l'un de ces outils est crucial.

  • Git / Mercurial / Subversion / ... - Vous pourriez passer des mois à rechercher des logiciels de contrôle de version, mais vous devriez probablement simplement utiliser Git. C'est solide, il est distribué, le @ $! #% & Linux Kernel est suivi avec. Si c'est assez bon pour Linus, ça doit être assez bon pour toi. J'entends aussi de bonnes choses à propos de Mercurial, apparemment G ** gle les utilise, donc ce n'est probablement pas mauvais. Certaines personnes semblent aimer Subversion et CVS et ainsi de suite. Je ne les aime pas car ils sont monolithiques, ce qui pour moi est très gênant et limitant.

  • Stumpwm / wmii / XMonad / ... - À un moment donné, vous vous rendrez compte que tout ce que vous pouvez faire pour garder votre travail fluide va grandement améliorer votre rendement. L'une des meilleures façons d'empêcher votre cerveau de rompre son contexte est de passer au carrelage, aux gestionnaires de fenêtres pilotés par clavier. Je suis un fan personnel de StumpWM , les Emacs des gestionnaires de fenêtres. Entièrement implémenté dans un processus Common Lisp personnalisable à la volée, tout ce que vous vous trouvez à faire de façon répétitive peut être banni dans les fonctions et lié aux commandes. Super truc. Je ne connais pas grand-chose des autres, mais peut-être vaut-il mieux approfondir un autre fil. UTILISEZ LE CLAVIER LE PLUS POSSIBLE.

  • GDB - Je ne connais pas les autres débogueurs, mais cela semble être la norme de facto.

  • Valgrind - Je ne connais rien d'autre qui fasse ce que cela fait si bien. Valgrind est crucial pour toutes ces chasses de profilage / fuite de mémoire embêtantes que vous souhaitez poursuivre. Vous ne pouvez tout simplement pas écrire de code avec malloc / calloc sans Valgrind.


J'ajouterais Linux Performance Counter ( perf.wiki.kernel.org/index.php/Main_Page ) et / ou Oprofile ( oprofile.sourceforge.net/news ) à cette liste.
Mark Probst

Je viens d'en faire un wiki communautaire, vous pouvez donc y ajouter ceux que vous jugez appropriés. Le compteur de performances semble être uniquement Linux? Je chercherai à confirmer / nier cela, mais si c'est le cas, cela devrait au moins être noté dans sa suggestion.
Eli Frey

2

J'ai persisté avec Vim pendant un certain temps, cela vaut la peine de connaître les bases de VIM car vous trouverez toujours une boîte UNIX quelque part qui n'a que cela, mais j'ai essayé Emacs et je n'ai pas regardé en arrière. Eclipse est une alternative «moderne», j'ai les trois sur mon système!


2

C'est vraiment une préférence personnelle, donc je ne pense pas pouvoir faire bien plus que vous dire ce que j'utilise. Emacs est configuré avec le mode Flymake , qui compile périodiquement le fichier sur lequel vous travaillez et analyse la sortie du compilateur pour déterminer les erreurs que vous avez commises. Il met en évidence les erreurs / avertissements dans le tampon et affiche le message d'erreur du compilateur associé


2

J'utilise Kate (texte) gcc / avr-gcc et make, avec Git comme VC. Je fais principalement des trucs embarqués en c et côté ordinateur en python.


2

Si vous faites du développement C sous Unix / Linux, vous devez absolument utiliser Cscope si le projet est de taille importante.

Cscope est un outil de développement pour parcourir le code source - passer à foobarla définition de la fonction, trouver tous les endroits où la variable fooest référencée, trouver tous les fichiers, y compris bar.h, changer toutes les occurrences de bardans baz, etc.

De plus, vous avez mentionné Vim dans votre article ... voici un tutoriel sur l'utilisation de Vim et Cscope ensemble.



1

mon préféré est exVim . Il possède de nombreux plugins vim, ce qui le rend très facile à utiliser avec une grande base de code. Je prends environ 1 jour pour en apprendre les caractéristiques mais cela en vaudra la peine.


1

J'édite C avec Vim dans la console. J'utilise des makefiles et j'ai un certain nombre de compilateurs pour tester mon code, y compris gcc, clang (LLVM) et icc. D'autres choses que je considère comme faisant partie de mon environnement de développement: l'utilisation de grep, des débogueurs et de valgrind. Un langage de script pour les builds plus compliqués. Git pour le contrôle de version.

Plus important dans mon esprit que ce que vous utilisez pour modifier le code est la façon dont vous structurez votre code. Comment mettre cela en place est probablement une question pour Stack Overflow, mais, comme vous l'avez demandé, j'ai souvent un répertoire séparé pour le code objet pas pour la distribution et un autre dossier pour le binaire résultant (y | ies). J'ai un dossier de test qui contient plus de fichiers C qui utilisent tout le code générique que j'écris et ceux-ci je valgrind, avec le fichier de projet final.


1

Vous pouvez essayer l' IDE moteur . Il est basé sur des malédictions, vous devriez donc vous sentir comme à la maison (tm).) C'est aussi un peu triste car il n'est pas entretenu depuis 5 ans maintenant, donc quelque chose pourrait être cassé. Bien que toujours - je crois que cela vaut la peine d'essayer.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.