• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天下

            記錄修行的印記

            C和C++混合編程

            1.#pragma once
            關于#pragma once ,VC
            ++及G++都支持,大膽的用吧。


            導出類型必須一致.要么是C的,要么是C++
            2.__cplusplus
            這個是必須的
            #ifdef __cplusplus
            extern “C” {
            #endif

            // Routines Here

            #ifdef __cplusplus
            }
            #endif

            c++中調用c的代碼
            1、對于 C++ 中非類的成員函數,可以簡單的在函數聲明前面加 extern "C" ,通常函數聲明位于頭文件中,當然也可以將聲明和函數定義一起放在 cpp 中 ,在沒有聲明的情況下,直接在定義前添加 extern "C" 也可

            2、對于 C++ 類的成員函數,則需要另外做一個 cpp 文件,將需要調用的函數進行包裝 。
            要實現 C++ 中調用 C 的代碼,具體操作:

            對于 C 中的函數代碼,要么將 C 代碼的頭文件進行修改,在其被含入 C++ 代碼時在聲明中加入 extern "C" 或者在 C++ 代碼中重新聲明一下 C 函數,重新聲明時添加上 extern "C" 頭 。

            通過以上的說明,我明白一點,那就是加 extern "C" 頭一定是加在 C++ 的代碼文件中才能起作用的 。
            下面分析一下這個現象的實質原因:

            C 編譯器編譯函數時不帶函數的類型信息,只包含函數符號名字,如 C 編譯器把函數 int a(float x) 編譯成類似 _a 這樣的符號, C 連接器只要找到了調用函數的符號,就可以連接成功,它假設參數類型信息是正確的,這是 C 編譯連接器的缺點。而 C++ 編譯器為了實現函數重載,編譯時會帶上函數的類型信息,如他把上面的 a 函數可能編譯成 _a_float 這樣的符號為了實現重載,注意它還是沒有帶返回值得信息,這也是為什么 C++ 不支持采用函數返回值來區別函數重載的原因之一,當然,函數的使用者對函數返回值的處理方式(如忽略)也是重要原因。

            基于以上, C 調用 C++ ,首先需要用封裝函數把對 C++ 的類等的調用封裝成 C 函數以便 C 調用,于是 extern "C" 的作用是:讓編譯器知道這件事,然后以 C 語言的方式編譯和連接封裝函數 (通常是把封裝函數用 C++ 編譯器按 C++ 方式編譯,用了 extern "C" 后,編譯器便依 C 的方式編譯封裝接口,當然接口函數里面的 C++ 語法還是按 C++ 方式編譯;對于 C 語言部分 -- 調用者,還是按 C 語言編譯;分別對 C++ 接口部分和 C 部分編譯后,再連接就可以實現 C 調用 C++ 了 )。相反 ,C++ 調用 C 函數, extern "C" 的作用是:讓 C++ 連接器找調用函數的符號時采用 C 的方式 ,即使用 _a 而不是 _a_float 來找調用函數

            posted on 2011-04-19 11:32 天下 閱讀(564) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            <2012年10月>
            30123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            導航

            統計

            常用鏈接

            留言簿(4)

            隨筆分類(378)

            隨筆檔案(329)

            鏈接

            最新隨筆

            搜索

            最新評論

            91久久精品国产91性色也| 人妻中文久久久久| 97精品国产91久久久久久| 久久精品国产只有精品2020| 久久亚洲视频| 久久精品国产免费| 精品久久人人爽天天玩人人妻| 久久亚洲综合色一区二区三区| 一极黄色视频久久网站| www.久久精品| 色欲综合久久躁天天躁蜜桃| 四虎久久影院| 国产亚洲美女精品久久久| 久久亚洲私人国产精品| 美女久久久久久| 国产成人香蕉久久久久| 2022年国产精品久久久久| 国产99久久久国产精品小说| 国产亚洲色婷婷久久99精品91| 久久久久久夜精品精品免费啦| 国产精品成人99久久久久| 久久久久久a亚洲欧洲aⅴ| 精品免费久久久久久久| 久久精品国产亚洲AV蜜臀色欲| 一级a性色生活片久久无| 久久午夜综合久久| 久久精品国产一区二区| 国产一区二区精品久久凹凸| 伊人久久大香线焦综合四虎| 亚洲国产精品热久久| 青青草原综合久久大伊人精品| 国产亚洲婷婷香蕉久久精品| 精品国产一区二区三区久久| 久久精品免费观看| 91亚洲国产成人久久精品网址| 欧美日韩中文字幕久久伊人| 国产成人AV综合久久| 国产成人精品久久亚洲高清不卡| 精品无码久久久久久久久久| 最新久久免费视频| 亚洲国产精品无码久久久不卡|