Амперсанд в макросе C - PullRequest
       4

Амперсанд в макросе C

0 голосов
/ 07 января 2012
2347 #define F_GFX3D(f, s, m, n) \
2348         { \
2349                 .freq_hz = f, \
2350                 .src_clk = &s##_clk.c, \
2351                 .md_val = MD4(4, m, 0, n), \
2352                 .ns_val = NS_MND_BANKED4(18, 14, n, m, 3, 0, s##_to_mm_mux), \
2353                 .ctl_val = CC_BANKED(9, 6, n), \
2354                 .mnd_en_mask = (BIT(8) | BIT(5)) * !!(n), \
2355         }
2356 static struct clk_freq_tbl clk_tbl_gfx3d[] = {
2357         F_GFX3D(        0, gnd,  0,  0),
2358         F_GFX3D( 27000000, pxo,  0,  0),
2359         F_GFX3D( 48000000, pll8, 1,  8),
2360         F_GFX3D( 54857000, pll8, 1,  7),
2361         F_GFX3D( 64000000, pll8, 1,  6),
2362         F_GFX3D( 76800000, pll8, 1,  5),
2363         F_GFX3D( 96000000, pll8, 1,  4),
2364         F_GFX3D(128000000, pll8, 1,  3),
2365         F_GFX3D(145455000, pll2, 2, 11),
2366         F_GFX3D(160000000, pll2, 1,  5),
2367         F_GFX3D(177778000, pll2, 2,  9),
2368         F_GFX3D(200000000, pll2, 1,  4),
2369         F_GFX3D(228571000, pll2, 2,  7),
2370         F_GFX3D(266667000, pll2, 1,  3),
2371         F_GFX3D(320000000, pll2, 2,  5),
2372         F_END
2373 };
2374 

Я пытаюсь понять, что делает макрос F_GFX3D, но что означает амперсанд в макросе? Это то же самое, что когда вы ставите амперсанд перед переменной?

Ответы [ 2 ]

4 голосов
/ 07 января 2012

Это не означает ничего особенного в контексте макроса.

Так что, как обычно, препроцессор копирует и вставляет тело макроса туда, где он создается (кроме замены аргументов макроса и## и т. Д.).

2 голосов
/ 07 января 2012

Макросы обрабатываются препроцессором; & не будет затронут, поэтому в конце код будет выглядеть, например, как это: &gnd_clk.c

...