Makrók, függvények és fájlok, cikkek, programozás - programozás C, Delphi, C #

M Akros C nagyon fontos, de a C ++ is sokkal kevésbé használják. Az első szabály számukra: nem használja őket, ha nem muszáj. Mint megjegyezte, szinte minden makro megjeleníti a hiba, vagy a nyelv, illetve a programban. Ha a használni kívánt makrót, kérjük, olvassa el alaposan az elején a vezető a végrehajtását C előfeldolgozó.

P növekedési makró meghatározása a következő:

#define név többi vonalon

Annak neve tyúk fordul jeléül, hogy helyébe a többi vonalon.

miután a bővítés:

elemzi = többi vonal

Azt is meghatározza, M makró paramétereket.

#define mac (a, b) argument1: egy argument2: b

Ha mac P meg kell adni a két paraméter vonalak. Expanzió után mac () helyébe a és b.

expandált = mac (foo bar, yuk yuk)

bővítés után akarata

expandált = argument1: foo bar argument2: yuk yuk

M Akros feldolgozott húrok és C ++ szintaxis nagyon keveset tudnak, és az olyan típusú, C ++ vagy körök - semmi. A fordító látja csak kiterjesztett formája a makró, így a hiba diagnosztizálják a makrót, amikor a makró bővült, de nem akkor, amikor meg van határozva. Ennek eredményeként, vannak furcsa hibaüzeneteket.

Mivel az ilyen makrók is elég:

#define Case szünet; ügy
#define nl <<"\\n"
#define örökre for (;;)
#define MIN (a, b) (((a)<(b))?(a):(b))

Mivel teljesen felesleges makrók:

#define PI 3.141593
#define BEGIN END #define>

De veszélyes makrók példa:

#define négyzet alakú (a) a * a
#define INCR_xx (xx) ++
#define DISP = 4

B Hogy milyen veszélyesek, próbálja elvégezni terjeszkedés a következő példát:


I f akkor kénytelenek vagyunk olyan makrót használni, amikor hivatkozva globális nevek, használja a hatálya felbontás működését. és csatolniuk kell a belépési makró nevét paraméter zárójelben, ahol lehetséges (lásd. a MIN fent).

Ó, testvér figyelmet arra, hogy különbséget bővülésének eredményeként a két makrók:

int a = m1 (1) 2;
int b = m2 (1) 2;

Makrók segítségével, akkor dolgozzon a saját nyelvén. A legvalószínűbb, hogy a többi lesz érthetetlen. Ezen túlmenően, a C előfeldolgozó - egy nagyon egyszerű makró processzor. Amikor megpróbál tenni valamit, nem triviális, azt fogod találni, hogy ezzel lehetetlen vagy rendkívül nehéz.