Sida 1 av 1

macro C variabelnamn till sträng

Postat: 27 december 2010, 16:36:04
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?

Re: macro C variabelnamn till sträng

Postat: 27 december 2010, 16:53:49
av rehnmaak
Du kan använda preprocessor operatorn ## för att klistra ihop två strängar.

#define errvar(varname) varname##_err

Re: macro C variabelnamn till sträng

Postat: 28 december 2010, 09:02:59
av dangraf
Tackar! fungerar utmärkt