色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > C語言中#和##的區(qū)別

          C語言中#和##的區(qū)別

          發(fā)布人:電子禪石 時間:2023-04-25 來源:工程師 發(fā)布文章
          C語言中#和##的區(qū)別
          
          .關于#和##
          在C語言中宏定義中,#的功能是將其后面的宏參數(shù)進行字符串化操作。
          
          #include<stdio.h>
          #define Str(s) #s
          int main()
          {
              printf(Str(HelloWorld));
              return;
          }

          結(jié)果為:


          ##是連接符,前加##或后加##,將標記作為一個合法的標識符的一部分,不是字符串.多用于多行的宏定義中。

          #include<stdio.h>
          #define Var(x) var##x
          int main()
          {
              int Var(1)=1,Var(2)=2,Var(3)=3;//不是字符串 這里是一個變量
              printf("var1=%d\n",var1);
              printf("var2=%d\n",var2);
              printf("var3=%d\n",var3);
              return 0;
          }


          結(jié)果為: 


          2.##與typedef、#define的使用

          win32圖形庫的代碼:

          1 #define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name2 DECLARE_HANDLE(HINSTANCE);

          HINSTANCE為句柄的數(shù)據(jù)類型(句柄:Windows操作系統(tǒng)為各應用程序騰出一些內(nèi)存儲地址,用來專門登記各應用對象在內(nèi)存中的地址變化,可理解為:句柄地址(穩(wěn)定)→記載著對象在內(nèi)存中的地址→對象在內(nèi)存中的地址(不穩(wěn)定)→實際對象)。

          宏展開:

          1 struct HINSTANCE__ { int unused;};2 typedef struct HINSTANCE__ *HINSTANCE;

          其中##的作用為將參數(shù)名與__連接。

           參考http://blog.csdn.net/acs713/article/details/6891837

          http://blog.chinaunix.net/uid-27666459-id-3772549.html


          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



          關鍵詞: c

          相關推薦

          技術專區(qū)

          關閉