Takže som sa stretol s nasledujúcim kódom v knižnici pre C pre RF komunikáciu:
#define __COMB(a,b,c) (a##b##c)
#define _COMB(a,b,c) __COMB(a,b,c)
Čo sa v podstate používa na vytvorenie rôznych mien pre konštanty a funkcie. Jednoducho spája parametre.
Čo nemám, je druhá línia. Existuje nejaký dôvod, prečo makro zabaliť? Ak je to len pomenovanie, prečo nie len napísať:
#define _COMB(a,b,c) (a##b##c)
Knižnica je k dispozícii tu.
Vopred ďakujem!
odpovede:
5 pre odpoveď č. 1Jedná sa o to, aby sa preprogramoval preprocesor C, aby sa parametre rozšírili predtým, ako sa znova zrekonštruujú. Tento typ oddelenia je potrebný v niektorých situáciách, napríklad ak __COMB
sa má použiť v stringifikácii parametra makra preprocesora.
2 pre odpoveď č. 2
Dvojité makro sa používa na to, aby sa uistil, že to bude fungovať aj keď sú parametre aj makrá.
Bez dvojitého makro by sme sa dostali XXYYZZ
namiesto xyz
:
#define XX x
#define YY y
#define ZZ z
_COMB(XX, YY, ZZ)