macro C variabelnamn till sträng

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
dangraf
Inlägg: 530
Blev medlem: 9 juni 2003, 15:30:56
Ort: göteborg

macro C variabelnamn till sträng

Inlägg av dangraf »

funderar över hur man kan hantera strängar med macron.

just nu har jag ett macro som kontrollerar storleken på en variabel

Kod: Markera allt


#define VAR_SIZE_SHOULD_MATCH( tempName, var, expSize) \
							typedef struct { uint8_t wrongSize[ sizeof(var) == expSize ? 1:-1 ];}tempName;

typedef enum _MotorOptionsSelector_t
{
    MOTOR_OPTIONS_DEFAULT = 0,
    MOTOR_OPTIONS_1 = 1,
    MOTOR_OPTIONS_2 = 2,
}MotorOptionsSelector_t;    // 1 byte
VAR_SIZE_SHOULD_MATCH( MotorOptionsSelector_tErr, MotorOptionsSelector_t, 1 );

som ni ser så tar macrot 3 parametrar, typedef namn, variabel och förväntad storlek.

jag skulle vilja att man bara hade 2 parametrar , variabelnamn och förväntad storlek.
skulle det gå att göra ett makro som omvandrar t.ex varName => varName_err ?
har kikat lite på #define VARNAME_TO_STR( var ) #var
men har inte lyckats lätta på t.ex en endelse på min variabel

någon som vet hur man gör?
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Re: macro C variabelnamn till sträng

Inlägg av rehnmaak »

Du kan använda preprocessor operatorn ## för att klistra ihop två strängar.

#define errvar(varname) varname##_err
dangraf
Inlägg: 530
Blev medlem: 9 juni 2003, 15:30:56
Ort: göteborg

Re: macro C variabelnamn till sträng

Inlägg av dangraf »

Tackar! fungerar utmärkt
Skriv svar