Article View: es.comp.os.linux.programacion
Article #7376Re: Consejos para aprender a programar???
From: Zephryn Xirdal
Date: Tue, 04 Mar 2003 22:01
Date: Tue, 04 Mar 2003 22:01
74 lines
4395 bytes
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-mailReferences:
<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