2012-01-07 4 views
0
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 매크로는 무엇을하는지 이해하려고하지만 매크로에서 앰퍼샌드는 무엇을 의미합니까? 변수 앞에 앰퍼샌드를 넣을 때와 같은가요?C 매크로의 앰퍼샌드

+0

매크로를 사용하지 않는 좋은 예입니다. – ugoren

답변

4

매크로의 맥락에서 특별한 것은 아닙니다.

그래서 전처리 기는 매크로 본문을 ## 등으로 대체하는 것 이외에 인스턴스화 된 곳으로 매크로 본문을 복사하여 붙여 넣습니다.

2

매크로는 전처리기에 의해 처리됩니다. &은 터치되지 않으므로 결국 코드는 다음과 같이 표시됩니다. 다음과 같이하십시오 : &gnd_clk.c