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

Contido eliminado Contido engadido
Gallaecio (conversa | contribucións)
Gallaecio (conversa | contribucións)
Sen resumo de edición
Liña 15:
</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>ifdef</code>==
A sintaxe fundamental desta orde é a seguinte:
<source lang=c>
#ifdef MACRO
ordes
#endif /* MACRO */
</source>
 
Isto é o que se adoita chamar un "grupo condicional". O grupo de <code>ordes</code> definidas só se lle fornecerán ao ''preprocesador'' en caso de que se defina <code>MACRO</code>.
 
Os grupos condicionais poden aniñarse, pero de facerse ten que ser completamente. É dicir, o peche dun grupo condicional (<code>#endif</code>) pecha o inicio de grupo condicional inmediatamente anterior (<code>#ifdef</code>). Tampouco se pode distribuír un grupo condicional en ficheiros separados.
 
Aínda que non se defina a condición (<code>MACRO</code>), o ''preprocesador'' analizará sintacticamente as ordes do grupo condicional, polo que estas terán que ser en todo momento código C correcto.
 
O comentario a continuación do <code>#endif</code> non é necesario, pero escribilo é unha bo costume. A súa presencia será de gran axuda para a lectura rápida do código en caso de haber moitas ordes dentro do grupo condicional. En todo caso, cómpre lembrar que debe ir coma un comentario, así que non hai que esquecer os caracteres precisos para tal, <code>/*</code> e <code>*/</code> ou <code>//</code>.
 
Cómpre botarlle unha ollada á lista de [[{{BASEPAGENAME}}/Macros estándar|''macros'' estándar]].
 
==<code>ifndef</code>==
Ás veces, ao contrario que na directriz anterior, cómpre que se utilicen certas ordes para o ''precompilador'' cando o <code>MACRO</code> non estea definido. A sintaxe é por tanto moi similar á do <code>#ifdef</code>:
<source lang=c>
#ifndef MACRO
ordes
#endif /* MACRO */
</source>
 
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.
 
==Véxase tamén==
===Ligazóns externas===
*[http://gcc.gnu.org/onlinedocs/cpp/Ifdef.html <code>#ifdef</code> no manual do ''precompilador'' de GCC].