找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1594|回復: 5
收起左側

C語言里面這種帶括號的宏定義有什么作用

[復制鏈接]
ID:700956 發(fā)表于 2023-4-7 12:44 | 顯示全部樓層 |閱讀模式
  • #define                C_PORTA                                        (PORTA)
  • #define                C_PORTB                                        (PORTB)
  • #define                C_PORTC                                        (PORTC)
  • #define                CST_KEY1_BIT                        (C_PORTB & C_KEY_BIT6)                        //定義按鍵地址


像這種,定義的時候最后的參數(shù)帶括號是啥意思?看不太懂
下面是原貼。
http://www.torrancerestoration.com/bbs/dpj-226114-1.html



回復

使用道具 舉報

ID:69038 發(fā)表于 2023-4-7 16:55 | 顯示全部樓層
#define 即 1(源 )映射到 2(目標)上 即在“PORTA”出現(xiàn)的在方用“C_PORTA"代替。至于參數(shù)帶括號,應無差別,至少Keil C51是這樣的
回復

使用道具 舉報

ID:883242 發(fā)表于 2023-4-7 20:12 | 顯示全部樓層
用括號包起來是防止展開后發(fā)生歧義的,括號還是很簡單的,你還沒見過用do {} while(0)把幾條語句包起來防止展開后發(fā)生歧義的。
回復

使用道具 舉報

ID:291668 發(fā)表于 2023-4-7 20:43 | 顯示全部樓層
沒啥區(qū)別,編譯結果一樣的?赡苁莻人習慣吧
回復

使用道具 舉報

ID:485350 發(fā)表于 2023-4-8 09:39 | 顯示全部樓層
#define CALC(X)  X + 3
   VALUE = (CALC(1) * 3)
   展開 VALUE = 1 + 3 * 3      結果VALUE為10

#define CALC(X) (X + 3)
   VALUE = (CALC(1) * 3)
   展開 VALUE = ((1 + 3) * 3)    結果VALUE為12
回復

使用道具 舉報

ID:59202 發(fā)表于 2023-4-8 20:18 | 顯示全部樓層
define后面的表達式用括號括上是正確且嚴謹?shù)膶懛,三樓說的是對的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表