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

Contido eliminado Contido engadido
Gallaecio (conversa | contribucións)
Completado!
m Bot: Cambios estética
 
Liña 17:
 
Onde:
* <code>CLAVE</code> é a clave a buscar (unha soa palabra) e
* <code>TEXTO</code> é a expresión que a vai substituír.
 
Esta orde para o ''preprocesador'' permite, por exemplo, repetir un mesmo valor numérico como [[{{BASEPAGENAME}}/Constantes literais|constante]] varias veces ao longo dun mesmo 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 <source lang=c enclose=none>#define</source>. E en caso de utilizar palabras clave descritivas, permite asemade mellorar a comprensión do código fonte. É o caso do seguinte exemplo:
Liña 25:
// [...]
c = a+a*(IVE/100); // Substitúese IVE por 16L.
// (o «L» é para especificar o tipo de dato, “long”, do «16»)
// [...]
</source>
Liña 42:
</source>
 
=== Convencións respecto das definicións de claves ===
As seguintes convencións adoitan evitar erros frecuentes ao definir claves:
* Cómpre colocar as variables sempre entre parénteses no texto de substitución para asegurarse de que, se son expresións, se executen coa prioridade máis alta posible para non mesturarse con outros operadores.
* Se o texto de substitución é unha expresión, cómpre rodealo no seu conxunto de parénteses, polos mesmos motivos que no caso anterior.
* Se o texto de substitución contén máis dunha orde ou declaracións de variables, cómpre situalo dentro dun ciclo [[{{BASEPAGENAME}}/Instrucións de control#do while|<source lang=c enclose=none>do{ [...] } while(0)</source>]], sen rematalo en «<code>;</code>», de xeito que poda usarse no código coma unha simple orde.
* Cando sexa posible, evítese repetir un argumento no texto de substitución.
* Se unha substitución desaparecerá nun futuro para deixar paso a unha función, a clave debería nomearse igualq ue a futura función.
 
=== <code>#</code> ===
O operador «<code>#</code>» permite que o primeiro argumento que lle siga se converta nunha cadea de texto limitada con comiñas dobres, «<code>"</code>». Por exemplo, a seguinte instrución:
<source lang=c>
Liña 77:
</source>
 
=== <code>##</code> ===
O operador «<code>##</code>» concatena as variables dos seus dous extremos. Por exemplo, a seguinte instrución:
<source lang=c>
Liña 91:
</source>
 
=== Comezo habitual dos ficheiros de cabeceira ===
Un uso habitual da directriz <source lang=c enclose=none>#define</source> é para a inclusión dos ficheiros de cabeceira nos códigos fonte, pois só se deben incluír unha vez. De maneira indirecta, é habitual incluír un ficheiro varias veces, dado que moitos ficheiros de cabeceira dependen á súa vez doutros. Mediante o uso de directrices condicionais xunto co <source lang=c enclose=none>#define</source>, pódese evitar a repetición. Para iso utilízase unha clave baseada xeralmente no propio nome do ficheiro de cabeceira. Véxase o seguinte exemplo:
<source lang=c>
Liña 135:
 
==<source lang=c enclose=none>#ifdef</source>==
Esta orde permite establecer o que se coñece como un “grupo condicional”. Permite establecer que unha serie de instrucións só se empreguen finalmente no código fonte en caso de que unha palabra clave fose previamente definida. A súa sintaxe fundamental é a seguinte:
<source lang=c>
#ifdef CLAVE
Liña 161:
 
==<source lang=c enclose=none>#pragma</source>==
=== Incluír bibliotecas de Windows<ref>[http://techbrahmana.blogspot.com/2008/04/pragma-commentlib-cool-way-to-indicate.html Blogue “I Think Tech”] (''en inglés'').</ref> ===
Mediante a seguinte liña, substituíndo <code>biblioteca</code> polo nome da biblioteca en cuestión, pódese especificar en [[Windows]] unha biblioteca da que depende o código fonte. O nome da biblioteca, tal e como se amosa a continuación, debe ir delimitado por comiñas dobres (<code>"</code>).
<source lang=c>
Liña 170:
Esta directriz cancela a definición dunha clave que se definiu previamente.
 
== Notas ==
<references />
 
== Véxase tamén ==
* [[{{BASEPAGENAME}}/Claves estándar|Claves estándar]].
 
 
Liña 180:
 
<!-- Categorías: -->
<!-- Noutros wikibooks -->
 
[[Categoría:C ─ Elementos|Directrices para o preprocesador]]
 
<!-- Noutros wikibooks -->
[[en:C Programming/Preprocessor]]