de la section 1.1 de "le livre C": p>
au niveau plus gros, une fonctionnalité évidente est la structure multi-fichiers d'un programme. La langue permet une compilation séparée, où le Certaines parties d'un programme complet peuvent être conservées dans un ou plusieurs fichiers source. et compilé indépendamment l'un de l'autre. L'idée est que le processus de compilation produira des fichiers qui peuvent ensuite être liés ensemble en utilisant n'importe quel éditeur de liaison ou chargeur que votre système fournit. La structure de bloc des langues en forme d'algol fait ceci plus difficile en insistant sur le fait que tout le programme vient dans un seul morceau, Bien qu'il y ait généralement des moyens de se déplacer. p> blockQuote>
Quelqu'un peut-il offrir des exemples de base / un aperçu de la programmation dans cette nature? p>
4 Réponses :
Plus petit exemple de compilation non séparée, le fichier anal compilation: en C Nous sommes libres de mettre tout dans un fichier ou dans plusieurs fichiers, ainsi que de compiler en une ou plusieurs étapes, si c'est votre question p> Exemple avec 2 fonctions dans le fichier anal compilation, nous sommes également libres de faire en une ou plusieurs étapes p> même programme à l'aide de plusieurs fichiers, et et compilation, en utilisant une ou plusieurs étapes: < / p> Il est également possible de créer et d'utiliser une bibliothèque, une bibliothèque statique contenant uniquement mc code> contenant:
gcc MC code> Production du code exécutable
.out code> p>
mc code>: p>
GCC M.C CODE> Production de l'exécutable
A.out code> li>
gcc -c m.c code> produisant
m.o code> alors
gcc m.o code> producteur exécutable
a.out code> li>
ul>
hw.c code> contenant p>
hw.h code> hw.h code> contenant p>
mc code> contenant p>
gcc m.c hw.c code> produisant exécutable
.out code> li>
gcc -c mc hw.c hw.c code> Production d'objets
Mo code> et
hw.o code>, puis
gcc mo hw.o < / code> pour produire exécutable
a.out code> li>
gcc -c mc code> Production d'objets
Mo code> (code> gcc -c hw.c. / code> objet de production
hw.o code > Alors
gcc mo hw.o code> pour produire exécutable
.out code> li>
ul>
hw.o code>: p>
gcc -c mc hw.c hw.c code> Production d'objets
Mo code> et
hw.o code> (ou deux gcc em> commandes , un par objet) li>
ar rcs hw.a hw.o code> Pour créer la bibliothèque statique contenant
hw.o code> li>
gcc m.o hw.a code> pour produire l'exécutable
a.out code> li>
ul> p>
Quelqu'un peut-il fournir quelques exemples de base / aperçu de la programmation dans cette nature? p>
avoir un fichier appelé
add.c code> contenant le code suivant: p>
xxx pré> compilez avec: p>
xxx Pre> Ceci crée
add.o code>. Vous avez maintenant un fichier avec le code suivant appelé
main.c code>: p>
xxx pré> ceci déclare
Ajouter code>, mais ne met pas en œuvre il. Cela ne courira pas seul. Mais vous pouvez toujours le compiler avec p>
xxx pré> , puis vous pouvez les relier avec: p>
xxx pré> Si vous exécutez la résultat programme (pourrait être appelé A.exe` ou quelque chose de similaire) Vous obtiendrez le résultat suivant: P>
3 + 2 = 5 p> BlockQuote>
L'avantage de ceci est que vous pouvez modifier l'une des pièces, la recompiler, puis le lier à nouveau sans avoir à toucher les autres parties. Si vous souhaitez une explication plus détaillée sur la question, je vous recommande de lire Cette réponse . P> blockquote>
Je ne suis pas sûr de ce que le livre signifie avec "La structure de bloc des langues de type algol rend cela plus difficile en insistant sur le fait que l'ensemble du programme vient dans un seul morceau." EM> Mais je peux imaginer qu'un La langue semblable à l'algol permet ou nécessite que les fonctions et les procédures soient déclarées dans em> le bloc de programme principal, impliquant qu'il n'existe qu'un seul bloc de programme, ce qui n'autorisera pas la partitionnement du programme dans des unités compilables, celles-ci. Mais encore une fois, je ne sais pas ce que le livre signifie avec cette déclaration. Exemple hypothétique: P> AlgolMain
Begin
procedure x
Begin
....
End
....
End
Je pense que cela frappe le clou carrément sur la tête. Le rapport Algol60 révisé définit
Exemple d'exemple du programme Algol, qui ne fait rien d'utile, mais est ici pour illustrer le point:
begin int x; x:=3; procedure p; begin integer y; y:=4; procedure q(n); value n; integer n; if n > 0 then q(n-1) else begin integer z; z:=x+y; print(z) end; q(1) end; p; comment a parameterless procedure call; end;
Sûr. Vous avez des fonctions et / ou des données dans un fichier, et certaines dans une autre, et certaines dans une autre, etc. Vous compilez les fichiers indépendamment. Ensuite, vous les associez ensemble pour produire un seul fichier exécutable pouvant être exécuté. Une fois qu'un programme est suffisamment important, vous devez la diviser en plusieurs fichiers pour le maintenir gérable, dans n'importe quel langage de programmation.
Ne décrivez-vous pas la compilation séparée? Je demande un exemple de compilation non séparé que je suppose était une caractéristique de langues antérieures à c dans lesquelles je n'ai aucune expérience.
Le «livre C» mentionne Algol. La lecture sur Algol devrait donc en fournir quelques exemples.
Dans ce cas, votre question est non claire. Vous citez d'un livre C où la compilation séparée est décrite et Algol est mentionné comme une langue dans laquelle il est plus difficile, mais vous venez de demander des exemples de "programmation dans cette nature". Pourquoi les gens supposeraient-ils que vous vouliez un exemple d'algol? L'hypothèse naturelle est que vous souhaitiez des exemples de compilation séparée en C, comme on peut le voir sur les réponses.
@ user1086516 Vous avez des réponses avec des compilations séparées et non séparées, est-ce que vous avez demandé?
Comment pourrais-je poser quelque chose quand je n'ai pas ce qu'on appelle? L'auteur poursuit pour expliquer la compilation séparée, ce qui permet à chaque langage de programmation normal impliquant que A) Il existe une manière différente de faire des choses et b) le fait que C était capable de faire une compilation distincte était importante.
@ user1086516 est la réponse de Bruno ce dont vous avez besoin? Il montre un exemple de compilation séparée et une autre de la compilation non séparée. Votre dernier commentaire ne le rend pas plus clair.
@ user1086516 Nous sommes plusieurs essais de comprendre votre question et d'essayer de répondre. Mais je suis perdu avec votre dernière remarque, je ne sais pas si vous avez ou non votre réponse. Si nous sommes multiples pour ne pas répondre bien cela signifie que nous ne pouvons pas vous comprendre parce que vous n'êtes pas assez clair dans votre question ...
Je demande à l'histoire de la programmation lorsque c'était: "En C, nous sommes libres de mettre tout dans un fichier ou dans plusieurs fichiers, ainsi que de compiler dans une ou plusieurs étapes", pas le cas. J'ai du mal à comprendre quand vous ne pouviez pas faire cela et c'était une grosse affaire que c pourrait.
@ user1086516, la compilation séparée a toujours été une caractéristique de certaines langues; Cela n'a pas été introduit par C. Certaines langues dans la famille Algol ne l'ont pas fourni, par exemple Pascal, mais c'était toujours une extension populaire.
@Aprogrammer merci. Sachant que je pouvais facilement trouver le document: «Compilation séparée et spécification partielle à Pascal» qui explique exactement le contexte historique que j'avais manqué.
@ user1086516 Votre question parle de toutes les sources d'un fichier ou non, ainsi que sur les fichiers sources compilées séparées ou non et à propos de la liaison, et votre question se termine par peut-elle offrir des exemples de base / aperçu de la programmation dans cette nature i >. Ceci est exactement b> de quoi je parle dans ma réponse! Vous dites que vous parlez de Histoire I>, où est ce mot dans votre question? Pouvez-vous expliquer comment nous pouvons donner Exemples de base i> de l'histoire? Non-sens