🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7376

Re: Consejos para aprender a programar???

#7376
From: Zephryn Xirdal
Date: Tue, 04 Mar 2003 22:01
74 lines
4395 bytes
Sasto.

He cambiado todo el c�digo que ten�a defines y los he puesto en diferentes
enums, de modo que por ejemplo, en el sistema de gesti�n de errores, los
distintos errores est�n codificados mediante enums, tal que las funciones
devuelven una variable de enum del tipo adecuado, o llaman a mi sistema de
throw/catch pasando el tipo de error... Cuando quiero sacarlo por pantalla,
o asignarlo de una variable, pues hago un cast y marchando que es de bayer.
De hecho lo hago as�:
        
        Lo que antes era una macro que tomaba un valor y lo sumaba a la base del
dispositivo, devolviendo un �ndice al nombre de dispositivo ahora es una
funci�n inline que toma un unsigned char y devuelve un enum del tipo
eErrDevice, que accede a un array est�tico donde se encuentra la cadena:

typedef enum
{
        ...
        eErrOtro=0x21,
        eErrDisp1=0x33,eErrDisp2,eErrDisp3
}EErrDevice;

inline EErrDevice err_MakeFromDispId(uchar id){return (
EErrDevice)(id+eErrDisp1);}

static const EErrDevice
eErrStr[][]={"perico","antonico",..."Device1","Device2",..};


> 
> Ahora puedes  usar enum y const  variables y eliminar  quasi todas las
> macros.
> 
> Por ejemplo en /usr/include/sysexists.h debria ser:
> 
>     enum {
>         EX_OK = 0,
>         EX__BASE = 64,
>         EX_USAGE = EX__BASE,
>         EX_DATAERR,   /* data format error */
>         EX_NOINPUT,   /* cannot open input */
>         EX_NOUSER,    /* addressee unknown */
>         EX_NOHOST,    /* host name unknown */
>         EX_UNAVAILABLE,       /* service unavailable */
>         EX_SOFTWARE,  /* internal software error */
>         EX_OSERR,     /* system error (e.g., can't fork) */
>         EX_OSFILE,    /* critical OS file missing */
>         EX_CANTCREAT, /* can't create (user) output file */
>         EX_IOERR,     /* input/output error */
>         EX_TEMPFAIL,  /* temp failure; user is invited to retry */
>         EX_PROTOCOL,  /* remote error in protocol */
>         EX_NOPERM,    /* permission denied */
>         EX_CONFIG,    /* configuration error */
>         EX__MAX = EX_CONFIG   /* maximum listed value */
>     };
> 
> y en math.h, debria ser:
> 
> const double M_E          = 2.7182818284590452354 ; /*e*/
> const double M_LOG2E      = 1.4426950408889634074 ; /*log_2e*/
> const double M_LOG10E     = 0.43429448190325182765 ; /*log_10e*/
> const double M_LN2        = 0.69314718055994530942 ; /*log_e2*/
> const double M_LN10       = 2.30258509299404568402 ; /*log_e10*/
> const double M_PI         = 3.14159265358979323846 ; /*pi*/
> const double M_PI_2       = 1.57079632679489661923 ; /*pi/2*/
> const double M_PI_4       = 0.78539816339744830962 ; /*pi/4*/
> const double M_1_PI       = 0.31830988618379067154 ; /*1/pi*/
> const double M_2_PI       = 0.63661977236758134308 ; /*2/pi*/
> const double M_2_SQRTPI   = 1.12837916709551257390 ; /*2/sqrt(pi)*/
> const double M_SQRT2      = 1.41421356237309504880 ; /*sqrt(2)*/
> const double M_SQRT1_2    = 0.70710678118654752440 ; /*1/sqrt(2)*/
> 
> 
> 
Technical Details
Message-ID: <b437nl$1r83su$1@ID-173561.news.dfncis.de>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed00.sul.t-online.de!t-online.de!newsfeed.freenet.de!fu-berlin.de!uni-berlin.de!217-126-215-203.uc.nombres.ttd.ES!not-for-mail
References: <oprk2383sc0o9sze@news.entelchile.net> <877kbofb9m.fsf@thalassa.informatimago.com> <3E5BC27C.AD066A70@terra.es> <87ptpfdkdf.fsf@thalassa.informatimago.com> <3e5d224e_2@nova.entelchile.net> <b3l91g$1nglkj$1@ID-173561.news.dfncis.de> <87k7ff729e.fsf@thalassa.informatimago.com>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,37f54a849f40e52d
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-03-04 14:01:28 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed00.sul.t-online.de!t-online.de!newsfeed.freenet.de!fu-berlin.de!uni-berlin.de!217-126-215-203.uc.nombres.ttd.ES!not-for-mail
From: Zephryn Xirdal <zephrynxirdal@telefonica.net>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Consejos para aprender a programar???
Date: 4 Mar 2003 22:01:26 GMT
Organization: The Zephryn Xirdal Company
Lines: 75
Message-ID: <b437nl$1r83su$1@ID-173561.news.dfncis.de>
References: <oprk2383sc0o9sze@news.entelchile.net> <877kbofb9m.fsf@thalassa.informatimago.com> <3E5BC27C.AD066A70@terra.es> <87ptpfdkdf.fsf@thalassa.informatimago.com> <3e5d224e_2@nova.entelchile.net> <b3l91g$1nglkj$1@ID-173561.news.dfncis.de> <87k7ff729e.fsf@thalassa.informatimago.com>
NNTP-Posting-Host: 217-126-215-203.uc.nombres.ttd.es (217.126.215.203)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8Bit
X-Trace: fu-berlin.de 1046815286 62132126 217.126.215.203 (16 [173561])
User-Agent: KNode/0.7.2