[elektro] C-s IDE kérdés

hg12345 hg12345 at freemail.hu
Thu Mar 29 10:18:10 CEST 2012


Szia, 
köszönöm a segítséget,
de nem értem :-( !!!!

#define ASSERT_CONCAT_(a, b) a##b
#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b)
#define ct_assert(e) enum { ASSERT_CONCAT(assert_line_, __LINE__) = 1/(!!(e)) }

Az első két sor még megy, ugyan a duplázás miért fontos számomra homály.

A harmadik sor létrehoz egy assert_line_XXXX alaku enumot, aminek ez érteke 1 lenne, de az 
!!(e) szerint változik, ha e=0 (FALSE) akkor nem tudom mit csinál mert nullával nem osztunk, minden más esetben 1.

Nekem már létezik az indexem....


Amit én szeretnék van egy létező indexem, és ezt szeretném fordítási időben kiírni, pl egy
typedef enum eE2index{ ee_Start=0, ee_Stop} eE2index_t;

#warning ???(ee_Stop)
esetén az index értékét szeretném látni. ez lenne a legjobb....

De nem ragaszkodok a fenti elképzeléshez, nekem már az is megfelelne, ha az IDE-ben a 
a typedef vagy enum érték halmaza listázható lenne.....

Az egyetlen megoldás amit találtam:
#if DEBUG
const eE2index_t  ENUMVALUETABLE[]={
 ee_Stop,
}
#endif

és legalább egy helyen hivatkozni kell rá, mert a fordító nem linkeli...
Utána a tömbben láthatóak az értékek és a IDE függő, hogy az index nevet is megjeleníti vagy nem.

kicsit körülményes!





Lajos Rancz <lajos.rancz at gmail.com> írta:
>Helló!>
>
Compile Time Assertnek hívják azt amit te szeretnél. Igazából C++-ban van,>
de C-ben is lehet valamit csinálni. Így hirtelenjében ezt találtam:>
http://www.pixelbeat.org/programming/gcc/static_assert.html>
(aranyos trükk)>
>
Üdv>
>
2012. március 29. 8:58 hg12345 írta, <hg12345 at freemail.hu>:>
>
> Hi,>
>>
> Van valami bevált módszer ENUM  index értékek értékeinek ellenőrzésére,>
> megjelenítésére?>
>>
> Az ENUM index neveket string összefüzéssel generálom többszörösön>
> összetett és egymásba ágyazott header-ben, nem tudom melyik név milyen>
> értéket takar.>
>>
> pl egy EEPROM cim listat esetén kényelmes lenne látni, hogy belefér a>
> EEPROM-ba vagy nem... (tudom ez egy #if is megoldható)>
>>
> Fordítási időben még nem sikerült semmilyen index vagy #define értéket>
> számként megjeleníteni #warning -val.>
>>
> Más nem jutott eszembe mint konstans tömbben a szükséges értékeket tárolom>
> és legalább egy helyen hivatkozom rá, hogy a a linker is elhelyezze a>
> memóriába :-)>
>>
> Van más megoldás?>
>>
>>
>>
>>
>>
>>
>>
>>
> ----------------------------------------->
>          elektro[-flame|-etc]>
----------------------------------------->
          elektro[-flame|-etc]>




More information about the Elektro mailing list