首頁>Club>
10
回覆列表
  • 1 # 使用者1062846289535

    宏定義,相當於在後面程式中,所有遇到宏定義的地方,直接用後面的式子替代。如

    BM定義為 #define BM(n) (1

    在後面出現BM(n)的地方,就是直接用 (1

    BM(1),直接就是執行把1左移一位。

    1、val是一個引數,就是給埠賦值的變數引數。

    2、^:按位“異或”——僅當兩個運算元不同時,相應的輸出結果才為1,否則為0。

    st( P##port##_##pin## ^= 1; )表示對應的埠pin腳是1時,表示式結果為0,是0時,表示式結果為1。

    預定義運算與函式中運算子的運算是一樣的,關鍵在於靈活掌握運算子的含義與使用。

    3、表示DIR的值與BM(pin)“相或”,結果賦值給DIR;

    4、表示DIR的值與BM(pin)的按位求反的值“相與”,結果賦值給DIR。

  • 2 # 使用者6369109692826

    1. 沒啥意思, 宏這東西就是硬湊的, 就這裡而言毫無意義, 但是結合具體使用就可能有意義了, 到時候前頭肯定會提供一個 { ,後頭也肯定會接個}, 當然未必是很直接的方式, 而很有可能是放在另外的什麼宏裡頭藏著

    2. 所謂宏定義沒有分號,只是說“宏定義”的語法本身不需要分號, 但是不妨礙你往定義的內容裡寫分號。 實際上是你愛寫什麼寫什麼, 寫什麼都替換進去, 分號沒什麼特別的

    3. 宏定義不“理解”什麼語法(其實還是理解一點點的,但是跟這個就沒關係了) , 宏定義只是替換, 至於理解, 只有具體使用的地方都替換過之後才有理解的問題

    總的來說你的問題就是試圖去理解宏裡面的語法, 宏只是替換,替換完了之後形成一個沒有宏的檔案, 才開始考慮它的語法問題, 單獨的考慮宏是沒意義的

  • 中秋節和大豐收的關聯?
  • 臺灣所有偶像劇的名字?