2017-07-18 7 views
-8

La déclaration est dans un fichier:Que sera remplacé par cette déclaration?

#include "filename" 

Quand ce fichier sera remplacé par son contenu?

  1. Avant compilation

  2. Après la compilation

  3. Pendant l'exécution

+9

Heh? Avez-vous omis le chapitre du prétraitement dans votre livre? –

+1

Le titre de la question ne correspond pas à la question elle-même. – Codor

+1

Lisez ceci: https://stackoverflow.com/questions/16253977/how-does-c-preprocessor-work –

Répondre

1

Prétraitement est effectuée avant les autres phases de la compilation, mais la plupart des compilateurs modernes comprennent la phase de pré-traitement dans le cadre du processus de compilation.

La question est approximative:

  • Si vous n'avez 3 choix, la réponse attendue est probablement 1.

  • Si vous pouvez sélectionner aucun des ci-dessus, vous êtes en difficulté parce que vous ne pouvez pas déterminer si la question est stupide ou subtile. Si c'est une question d'entrevue, voici votre chance de dire à l'interviewer tout ce que vous savez sur le processus de compilation, les phases d'analyse, etc. Le délai sera atteint avant que le sujet soit épuisé.

+0

..unless NOTA est une option cachée;) – CinCout

+1

@CinCout: En effet, il pourrait être une question piège. – chqrlie

+0

@chqrlie "Si c'est une question d'entrevue, voici votre chance de dire à l'interviewer tout ce que vous ... pensez de lui." :) –

1

Si suivre strictement cette description de la norme C (qui ne pas utiliser le mot "compilation") (5.1.1 environnement de traduction, 5.1.1.1 Structure du programme)

1 programme AC ne doivent pas tous être traduits en même temps. Le texte du programme est conservé dans des unités appelées fichiers sources (ou prétraitement des fichiers ) dans la présente Norme internationale. Un fichier source avec tous les en-têtes et les fichiers source inclus via la directive de prétraitement #include est connu sous le nom de unité de traduction de prétraitement. Après le prétraitement, une unité de traduction de prétraitement est appelée unité de traduction. Les unités de traduction précédemment traduites peuvent être conservées individuellement ou dans des bibliothèques. Les unités de traduction séparées d'un programme communiquent par (par exemple) des appels à des fonctions dont les identificateurs ont une liaison externe, une manipulation d'objets dont les identifiants ont une liaison externe, ou une manipulation de fichiers de données. Les unités de traduction peuvent être traduites séparément et ensuite liées à produire un programme exécutable.

Ainsi, lors du pré-traitement, mais avant la traduction, toutes les #includes sont substituées aux fichiers source.