博客專欄

        EEPW首頁 > 博客 > C語言中#和##的區別

        C語言中#和##的區別

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

        結果為:


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

        #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;
        }


        結果為: 


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

        win32圖形庫的代碼:

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

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

        宏展開:

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

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

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

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


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: c

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 马龙县| 马山县| 长子县| 游戏| 顺昌县| 周至县| 精河县| 安化县| 油尖旺区| 安图县| 斗六市| 友谊县| 资兴市| 永川市| 阳西县| 九龙坡区| 嘉禾县| 团风县| 宜春市| 东兴市| 卫辉市| 通山县| 铅山县| 台前县| 乌兰浩特市| 湖北省| 大同县| 临桂县| 澜沧| 日照市| 左云县| 兴文县| 修水县| 潮州市| 石棉县| 昌黎县| 象山县| 花垣县| 会东县| 北海市| 大渡口区|