• <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 天下 閱讀(560) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            <2011年3月>
            272812345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿(4)

            隨筆分類(378)

            隨筆檔案(329)

            鏈接

            最新隨筆

            搜索

            最新評論

            午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久婷婷五月综合国产尤物app| 久久夜色tv网站| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | www亚洲欲色成人久久精品| 国产福利电影一区二区三区久久老子无码午夜伦不 | MM131亚洲国产美女久久| 91精品国产高清久久久久久91| 亚洲国产一成久久精品国产成人综合 | 99久久精品国产免看国产一区| 久久综合九色综合久99| 久久婷婷五月综合成人D啪| 欧美久久综合性欧美| 亚洲精品乱码久久久久久蜜桃图片 | 手机看片久久高清国产日韩| 国产精品久久午夜夜伦鲁鲁| 一本久久精品一区二区| 婷婷久久综合九色综合98| 久久久久久午夜精品| 国产三级精品久久| 国产99久久精品一区二区| 一本色道久久综合狠狠躁| 欧美与黑人午夜性猛交久久久| 久久青草国产精品一区| 久久不见久久见免费视频7| 亚洲AV无码一区东京热久久| 国产免费久久精品99re丫y| 老司机午夜网站国内精品久久久久久久久 | 久久国产视频网| 91精品国产综合久久四虎久久无码一级| 亚洲中文字幕无码久久2017| 亚洲精品tv久久久久| 亚洲美日韩Av中文字幕无码久久久妻妇 | 久久se精品一区精品二区| 2021久久国自产拍精品| 国产精品一久久香蕉国产线看| 久久综合久久自在自线精品自| 亚洲午夜久久久久妓女影院| 久久久久久久久66精品片| 中文无码久久精品| 996久久国产精品线观看|