Jak přepsat #define kdekoli v programu??

Mám obavu, že budeš muset volání funkce upravit z

teplota = ds18b20_gettemp();

na

teplota = ds18b20_gettemp(cislo_cidla);

a funkci vlastní pak na

[code]int ds18b20_gettemp(char cidlo)
{
switch (cidlo)
{
#define DS18B20_DQ PA0
case 0: <obsluha čidla>;
return <teplota čidla>;
break;
#undef DS18B20_DQ
#define DS18B20_DQ PA1
case 1: <obsluha čidla>;
return <teplota čidla>;
break;

#undef DS18B20_DQ
#define DS18B20_DQ PA2
case 2: <obsluha čidla>;
return <teplota čidla>;
break;
#undef DS18B20_DQ

        default: return <nesmyslná hodnota>;
    }

}
[/code]

Obsluhu čidla pak stačí napsat stylem

a=DS18B20_DQ if (DS18B20_DQ== b) atd.

Jen jí ještě musíš pomocí CTRL-C a CTRL-V zkopírovat do všech case - tohle by mělo fungovat.

Možná by šlo kód napsat jako makro :

.macro ObsluhaTeplomeru a=DS18B20_DQ if (DS18B20_DQ== b) atd. .endm

a funkci pak

[code]int ds18b20_gettemp(char cidlo)
{
switch (cidlo)
{
#define DS18B20_DQ PA0
case 0: ObsluhaTeplomeru;
return <teplota čidla>;
break;
#undef DS18B20_DQ
#define DS18B20_DQ PA1
case 1: ObsluhaTeplomeru;
return <teplota čidla>;
break;

#undef DS18B20_DQ
#define DS18B20_DQ PA2
case 2: ObsluhaTeplomeru;
return <teplota čidla>;
break;
#undef DS18B20_DQ

        default: return <nesmyslná hodnota>;
    }

}
[/code]

Ale tím si nejsem 100% jistý. Výhodou by byla jednodušší úprava programu pro čidlo - nemusel bys to fyzicky rozkopírovávat. Jenže teďka nemám u sebe AS a nemůžu tuhle variantu překladu vyzkoušet.