マクロ関数とカスタム関数

4601 ワード

最初にマクロ関数を定義するときは、書きやすいように1つの関数を数行書きましたが、次のように接続記号で接続されていません.
1 #define CHECK(ret) ({
2                  int ret;
3                  ...
4 })

GCCはいつもretが範囲内ではないことを示している.
私がすぐに思いついたのは、私の下で定義したint retが下にマクロに含まれていないことです.このマクロは、CHECK(ret)==({;下に空いているのはmain関数以外で、これはもちろん間違っています.それから、接続記号を使いました.コードは以下の通りです.
1 #define CHECK(ret) ({  \
2                 int ret;                    
3 })

          ,          ,              ,          ,       ,           。



      type func(arg){; ;}

           :
1.            
2.            
3.           ,            
4.          

1.                
2.          ,             
3.              
4.             ,