C/Compilar un programa: Diferenzas entre revisións

Contido eliminado Contido engadido
Gallaecio (conversa | contribucións)
Sen resumo de edición
Gallaecio (conversa | contribucións)
Sen resumo de edición
Liña 1:
{{Navegador|Editar un programa|Ligar un programa}}
 
Despois de editar o ficheiro de texto simple e escribir nel un programa en linguaxe C, toca compilar tidoo programa. Isto é, traducir o ficheiro de texto simple en C a un ficheiro binario, é dicir, ena linguaxe máquina, a linguaxe que o computador poidapode entender. Esta tarefa realizarémolarealizarase cocun compilador da nosa elección. Se non tes un compilador, volve ao apartado dos [[{{BASEPAGENAME}}/Requisitos#Compilador|requisitos]], no que se nomeaba algún programa para compilar.
 
==Proceso de compilación==
O proceso de compilación consta de certas fases.
 
En primeiro lugar está a fase do ''preprocesador'' (un programa que forma parte do compilador). Nas primeiras liñas dun programa en C sitúanse unha serie de [[{{BASEPAGENAME}}/Directrices para o preprocesador|instrucións para o ''preprocesador'']]. Son aquelas que comezan co símbolo <code>#</code>. Ditas ordes indícanlle ao ''precompilador'', entre outras cousas, en que ficheiros atopar as distintas [[{{BASEPAGENAME}}/Funcións|funcións]] utilizadas no programa. Asemade, o ''precompilador'' elimina todos os espazos e saltos de liña que puxemosse puxeron no código fonte como unha axuda visual para a comprensión do código por parte das persoas, pero que o compilador non vai necesitar ou comprender.
 
A continuación realízase unha análise sintáctica e semántica das instrucións do código fonte, mediante a cal o compilador se asegura de que non vai haber ningún [[{{PAGENAME}}#Erros|erro]] á hora da compilación.
 
Así, feita a análise, procédese á verdadeira compilación., Estaque transformará comoo resultadocódigo osfonte diferentesen [[{{PAGENAME}}#ProgramasCódigo obxecto|programascódigo obxecto]], é dicir, o equivalente en linguaxe máquina ao código fonte pero aínda sen os compoñentes necesarios para que poida executarse.
 
==ProgramasCódigo obxecto==
Como resultado da compilación, obteremos un ou varios programas obxecto. Un código fonte pode conter varias funcións, algunhas forman parte das bibliotecas de funcións do compilador, pero outras poden ser obra do propio desenvolvedor, e estas funcións do desenvolvedor poden atoparse no ficheiro do código fonte principal ou ben noutros ficheiros de código fonte aos que se fai referencia dende o ficheiro do código fonte principal. O compilador compilará o contido de cada un destes ficheiros por separado, orixinando distintos binariosficheiros en linguaxe máquina ou binario, chamados programas obxecto ou código obxecto.
 
Deste xeito, de producirse algún erro de execución, o programa non vai ter que volver compilarse completamente. Se o programa está dividido en distintos ficheiros, só será necesario corrixir os erros dos ficheiros afectados, e compilar unicamente ditos ficheiros. Pero separados, estes ficheiros non poden executarse. Haberá que [[{{BASEPAGENAME}}/Ligar un programa|ligalos]]. Cómpre ter en conta que sempre que o programa utilice algunha función externa, incluídas as propias do compilador cuxas cabeceiras se lle fornecen ao ''preprocesador'' ao comezo do código fonte mediante [[{{BASEPAGENAME}}/Directrices para o preprocesador|directrices para o ''preprocesador'']]. Isto significa que o [[{{BASEPAGENAME}}/Ligar un programa|seguinte paso]] será necesario (case) sempre antes de poder [[{{BASEPAGENAME}}/Executar un programa|executar un programa]].
 
==Erros==
Durante a análise que se produce durante o [[{{PAGENAME}}#Proceso de compilación|proceso de compilación]] poden xurdir erros de compilación. Ante erros de compilación, esta cancelarase, e teremoshaberá que corrixilos. Xeralmente o propio compilador indicaranosindicará ena liña na que liña se atopouatoparon cosos erros, e con máis ou menos detalles diranos cal foi o errodescribiraos. Entre os erros máis habituais están:
*non rematar unha sentencia cun punto e coma (<code>;</code>), ou
*utilizar o [[{{BASEPAGENAME}}/Variables#Asignar valores a unha variable|carácter de asignación]] (<code>=</code>) en vez de o de [[{{BASEPAGENAME}}/Operadores#Operadores relacionais|igualación]] (<code>==</code>) nunha [[{{BASEPAGENAME}}/Expresións|expresión]], ou
*situar o <code>else</code> dunhad[[{{BASEPAGENAME}}/if|unha sentencia <code>if</code>]] despois de sentencias que están fora do <code>if</code>.
 
Máis adiante comprenderás o que significan estes erros, e a base de práctica e máis práctica aprenderás a corrixilos á primeira. Pero vaite afacendo á idea de que sempre que intentes compilar un programa por vez primeira vai aparecer algún erro. Isto pásalles a todos, tanto ao estudante coma ao profesional. Non hai nada de malo en que aparezan erros. O malo sería non dalos corrixido.
Liña 28 ⟶ 29:
 
{{Navegador|Editar un programa|Ligar un programa}}
[[Categoría:C|Compilar un programaCompilacion]]