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 3:
Despois de editar o ficheiro de texto simple e escribir nel un programa en linguaxe C, toca compilar tido programa. Isto é, traducir o ficheiro de texto simple en C a un ficheiro binario, é dicir, en linguaxe máquina, que o computador poida entender. Esta tarefa realizarémola co 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==
Como resultado da compilación, obteremos un ou varios programas obxecto. Un código fonte pode conter varias funcións, algunhas forman parte 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 binarios, chamados programas obxecto.
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 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 funcións utilizadas no programa. Asemade, o ''precompilador'' elimina espazos e saltos de liña que puxemos no código fonte como unha axuda visual para a comprensión do código, pero que o compilador non vai necesitar ou comprender.
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.
 
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. Esta dá como resultado os diferentes [[{{PAGENAME}}#Programas obxecto|programas obxecto]].
 
==Programas obxecto==
Como resultado da compilación, obteremos un ou varios programas obxecto. Un código fonte pode conter varias funcións, algunhas forman parte 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 binarios, chamados programas 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]].
 
==Erros==
ODurante compilador realiza unhaa análise sintácticaque ese semánticaproduce dasdurante instruciónso do[[{{PAGENAME}}#Proceso códigode fonte.compilación|proceso Dede dita análisecompilación]] poden xurdir erros de compilación. Ante erros de compilación, esta cancelarase, e teremos que corrixilos. Xeralmente o propio compilador indicaranos en que liña se atopou cos erros, e con máis ou menos detalles diranos cal foi o erro. Entre os erros máis habituais están:
*non rematar unha sentencia cun punto e coma (<code>;</code>), ou
*situar o <code>else</code> dunha sentencia <code>if</code> despois de sentencias que están fora do <code>if</code>.