<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            C語言

            C語言中如何定義函數式宏

            時間:2025-02-15 08:44:58 C語言 我要投稿
            • 相關推薦

            C語言中如何定義函數式宏

              導語:眾所周知,宏擴展是純粹的文本擴展,若定義不明確,就會導致結果錯誤,或者編譯錯誤,尤其是定義函數式宏時,下面有三條規則可以使我們避免出錯。具體有哪些呢?一起來學習下吧:

              規則1:宏體必須使用括號包起來,以便保護表達式中低優先級的操作符。

              例:

              #define square(x)x*x

              調用如下:

              1/square(n)

              會被擴展為

              1/n*n

              這等價于(1/n)*n,而我們需要的是

              1/(n*n)

              規則2:在宏定義內部,所有參數的出現都必須用括號括起來,以便保護實參中任何低優先級的操作符不受宏擴展其他部分的影響。

              同樣以square()為例,調用

              square(n+1);

              會被擴展為

              n+1*n+1

              但我們需要的是

              (n+1)*(n+1)

              規則3:如果一個參數在擴展中出現了多次,并且實參是帶有副作用的表達式,則宏可能不能正確運行。

              再以square()宏為例,調用

              square(i++)

              會被擴展為

              i++*i++

              這很顯然是未定義的

              遵循規則1和規則2的正確square宏的定義應該是:

              #define square(x) ( (x) * (x) )


            【C語言中如何定義函數式宏】相關文章:

            C語言中的預編譯宏定義09-07

            簡單講解C語言中宏的定義與使用07-30

            C語言宏定義07-01

            C 語言中宏的使用08-02

            C語言函數的定義07-13

            C語言宏定義技巧09-03

            C語言的宏定義分析09-10

            C語言中函數的區分08-30

            C語言預定義宏用法10-06

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院