C/Directrices para o preprocesador: Diferenzas entre revisións

Contido eliminado Contido engadido
Gallaecio (conversa | contribucións)
m →‎ifdef: unha --> un
Gallaecio (conversa | contribucións)
Engado #define, ordeno os apartados alfabéticamente e categorizo.
Liña 1:
{{Navegador|Estrutura e estilo|Funcións}}
 
O ''preprocesador'' de C identifica todas as liñas de código que comecen polo carácter <code>#</code> coma ordes para el. As principais ordes para o ''preprocesador'' son [[{{PAGENAME}}#include|<code>#include</code>]] e <code>#define</code>. Da última xa falaramos [[{{BASEPAGENAMEPAGENAME}}/Constantes simbólicas#define|antes<code>#define</code>]].
 
==<code>includedefine</code>==
Esta orde define o valor que terá un texto no código. Isto é: lle di ao ''precompilador'' que cada vez que se atope no código cun "''macro''" que nós establezamos, o substitúa por un valor que nós establezamos. Isto permítenos repetir un valor varias veces ao longo do código, e o máis importante, facilita a tarefa de cambiar dito valor en todo o código, reducíndoa a cambiar o valor no <code>#define</code>.
Esta orde para o ''precompilador'' utilízase para dúas cousas: ben para indicarlle ao ''precompilador'' o nome do ficheiro de cabeceira que contén os [[{{BASEPAGENAME}}/Funcións#Declaración dunha función|prototipos]] das funcións utilizadas no programa que forman parte da colección de bibliotecas do compilador, ou ben cargar un ficheiro de código externo que conteña a [[{{BASEPAGENAME}}/Funcións#Definición dunha función|definición]] dunha ou máis funcións ás que se [[{{BASEPAGENAME}}/Funcións#Chamada a unha función|chama]] no programa.
 
Tamén pode mellorar a comprensión do código, mediante o uso de ''macros'' descritivos, coma a primeira orde do seguinte exemplo:
<source lang=c>
// Podemos especificar o tipo de dato que terá en todo o código o valor numérico:
#include <ficheiro.h>
#define IVE 16L
</source>
// Asemade, podemos asignar unha cadea en lugar dun valor:
Esta orde inclúe o ficheiro de cabeceira <code>ficheiro.h</code>, e o ''precompilador'' buscará dito ficheiro no directorio por defecto de ficheiros de cabeceira do compilador.
#define AVANZA "Preme a frecha esquerda"
 
int main(void){
<source lang=c>
...
#include "/ruta/ao/ficheiro.h"
c = a+a*(IVE/100); // Substitúese IVE por 16 (tipo long)
...
printf(AVANZA); // Substitúese AVANZA por "Preme a frecha esquerda"
 
}
</source>
 
Esta outra orde inclúe no código o contido dun ficheiro externo que se supón contén as definicións dunha serie de funcións que se utilizarán no código.
Xeralmente, os ''macros'' escríbense en maiúsculas, para que outros programadores os recoñezan como tales. De todos xeitos, sempre que sexa posible, convén usar o [[{{PAGENAME}}#const|seguinte método]], que se ben está máis limitado nalgúns aspectos ten menor problemática en xeral.
 
==<code>ifdef</code>==
Liña 43 ⟶ 51:
 
Un uso habitual deste tipo de directriz para o ''preprocesador'' consiste no uso de certas ordes unicamente a primeira vez que se [[{{PAGENAME}}#include|inclúe]] un ficheiro de cabeceira.
 
==<code>include</code>==
Esta orde para o ''precompilador'' utilízase para dúas cousas: ben para indicarlle ao ''precompilador'' o nome do ficheiro de cabeceira que contén os [[{{BASEPAGENAME}}/Funcións#Declaración dunha función|prototipos]] das funcións utilizadas no programa que forman parte da colección de bibliotecas do compilador, ou ben cargar un ficheiro de código externo que conteña a [[{{BASEPAGENAME}}/Funcións#Definición dunha función|definición]] dunha ou máis funcións ás que se [[{{BASEPAGENAME}}/Funcións#Chamada a unha función|chama]] no programa.
 
<source lang=c>
#include <ficheiro.h>
</source>
Esta orde inclúe o ficheiro de cabeceira <code>ficheiro.h</code>, e o ''precompilador'' buscará dito ficheiro no directorio por defecto de ficheiros de cabeceira do compilador.
 
<source lang=c>
#include "/ruta/ao/ficheiro.h"
</source>
Esta outra orde inclúe no código o contido dun ficheiro externo que se supón contén as definicións dunha serie de funcións que se utilizarán no código.
 
==<code>pragma</code>==
Liña 57 ⟶ 78:
 
{{Navegador|Estrutura e estilo|Funcións}}
 
<!-- Categorías: -->
[[Categoría:C|Preprocesador]]