quй es esto? #if defined
#1

viendo un fs, veo este cуdigo que no se como funciona y para que sirve

Код:
#if defined COMPILE_MANGLE
	#include "tstudio\mangle.pwn"
#endif
tambiйn lo tiene dentro de enumeradores

Код:
// Object information ENUM
enum OBJECTINFO
{
	oID,                                        // Object id
#if defined COMPILE_MANGLE
	oCAID,                                      // ColAndreas index
#endif
	oGroup,                                     // Object group
	oModel,                                     // Object Model
	Text3D:oTextID,                             // Object 3d text label
	Float:oX,                                   // Position Z
	Float:oY,                                   // Position Z
	Float:oZ,                                   // Position Z
	Float:oRX,                                  // Rotation Z
	Float:oRY,                                  // Rotation Z
	Float:oRZ,                                  // Rotation Z
	oTexIndex[MAX_MATERIALS],                   // Texture index ref
	oColorIndex[MAX_MATERIALS],                 // Material List
	ousetext,              						// Use text
	oFontFace,    								// Font face reference
	oFontSize,    								// Font size reference
	oFontBold,    								// Font bold
	oFontColor,   								// Font color
	oBackColor,   								// Font back color
	oAlignment,   								// Font alignment
	oTextFontSize, 							 	// Font text size
	oObjectText[MAX_TEXT_LENGTH],              	// Font text
	oAttachedVehicle,                           // Vehicle object is attached to
}
sй que es el preprocesador pero como funciona?, no me pasen el tutorial en inglйs.
Reply
#2

Como tu mismo lo dices, son pre-procesadores. Tiene como utilidad comprobar condiciones para realizar una acciуn.

ej:

pawn Код:
#if defined COMPILE_MANGLE // en espaсol: si esta definido COMPILE MANGLE
//entonces
    oCAID,                                      // ColAndreas index
#endif // terminar condiciуn (end-if)
La ъnica diferencia es que esto solamente se ejecuta durante la compilaciуn del cуdigo, no mientras estй funcionando el servidor, por eso son llamados pre-procesadores

el primer ejemplo que colocaste, se ejecutarнa de esta forma:

pawn Код:
#if defined COMPILE_MANGLE // si en alguna parte del cуdigo esta definido (#define COMPILE_MANGLE) entonces se cumple:
    #include "tstudio\mangle.pwn"
#endif // termina la condiciуn
tambien puedes usar else

pawn Код:
#if defined COMPILE_MANGLE // si en alguna parte del cуdigo esta definido (#define COMPILE_MANGLE) entonces:
    #include "tstudio\mangle.pwn"
#else // si no
// algo
#endif // termina la condiciуn
Reply
#3

Entiendo.

Код:
#if defined _MY_INC_INCLUDED
    #endinput
#endif
#define _MY_INC_INCLUDED
#pragma library "MyInc"
y este para que sirve? aunque es bбsicamente lo mismo, creo.
Reply
#4

#endinput declara que ese script (comъnmente includes) dejarб de ser compilado. Se usa para evitar que 2 includes sean aсadidos en el mismo script (y evitar varios errores).

En ese cуdigo, verifica que "_MY_INC_INCLUDED" no estй incluido en el script, luego lo crea (si es que no estaba incluido).
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)