青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

martin

thinking

常用鏈接

統(tǒng)計(jì)

software

最新評(píng)論

C/C++混合編程

前段時(shí)間,碰到了C,C++混合編程的需求,經(jīng)過(guò)努力,順利解決問(wèn)題.現(xiàn)把這方面的知識(shí)做一下簡(jiǎn)單的總結(jié):
 
1.當(dāng)C++文件要用到C語(yǔ)言中的函數(shù)代碼時(shí),采用下屬方法即可:
在C++中的.h文件或.cpp文件中加入下列代碼,
#define LINT_ARGS 1
extern "C" {
#include "system.h"
}
 
然后在代碼中直接調(diào)用這些函數(shù)即可.

注解:
1.1 LINT_ARGS 1表示在檢查C語(yǔ)言中的函數(shù)原型時(shí),要對(duì)函數(shù)原型的參數(shù)進(jìn)行檢查. 
1.2. "{ }" 中包含的頭文件為C語(yǔ)言中的頭文件.
1.3.extern "C" 告訴鏈接器,這些頭文件中的函數(shù)被當(dāng)做C語(yǔ)言中的函數(shù)來(lái)處理.
 
下面以一個(gè)實(shí)例加以說(shuō)明:
下面為一個(gè)C語(yǔ)言的頭文件(sysgct.h):
#ifdef LINT_ARGS
  int  GCT_send(unsigned int task_id, HDR *h);
  ......
#else
  int  GCT_send();
  ......
#endif
~
in file MapBaseReq.cpp 文件中
#include ....
extern "C"
{
#include "sysgct.h"
}
void
MapBaseReq::sendPdu(const BasePdu_var& thePduP)
{
    ...
    if (GCT_send(m->hdr.dst, (HDR *)m) != 0)
        {
                relm((HDR *)m);
                SETERR1(errSWErrorMsg, "sendPdu(): GCT_send() Failed");
        }
   ...
}
 
2.當(dāng)C文件要用到C++語(yǔ)言某個(gè)類中的方法時(shí),可以采用下列方法:
2.1 在cpp文件中用下列方式定義函數(shù):
extern "C" returnType FunName(parameters list).
 
2.2 然后在相應(yīng)的頭文件中進(jìn)行聲明:
extern returnType FunName(parameters list);
 
2.3 在相應(yīng)的.c文件中包含該頭文件,然后直接利用相應(yīng)的函數(shù)即可.
 
下面給出實(shí)例.
 
2.4 cpp文件

#include <iostream>
#include <iomanip>
#include "TTDebug.h"
using namespace std;

extern "C"
{
#include "Utility.h"
}

static int display_hex_buffer(unsigned char* buffer, unsigned char* ptr,int len);

extern "C" void tDebug_traceFunc(int level, char* trace)
{
        TDEBUG_TRACEFUNC(level,trace);
}

extern "C" void nDebug(int level, unsigned char* args, int iLen, int cid)
{
        unsigned char buf[512];
        if(0 != TTDebug::instance() && TTDebug::instance()->isTTDebugOn(level))
        {
                /* Check whether the current thread already holds the mutex lock */
                LockGuard<MutexWrapper> guard(TTDebug::instance()->mutex());
                TTDebug::instance()->traceStart(level, __FILE__, __LINE__);
                memset(buf,0,512);
                display_hex_buffer(buf,args,iLen);
                TTDebug::instance()->outStream() << "Send Msg(0-0x" << setw(4) << setfill('0') << hex << cid <<"):0x" << buf;
                TTDebug::instance()->traceEnd();
        }
}

2.5 .h 文件

#ifndef __UTILITY_H
#define __UTILITY_H

extern void tDebug_traceFunc(int level, char* trace);
extern void nDebug(int level, unsigned char* args,int iLen, int cid);

#endif
 
2.6 cpp文件中定義的函數(shù)在c文件中調(diào)用實(shí)例
在test.c文件中:

...

int ctu_ent(msg,pInt)
  MSG* msg;
  int *pInt;
{

 tDebug_traceFunc(10,"ctu ctu_ent");

  HDR *h;
  MSG *m;

   ...

}

...


posted on 2009-03-03 16:25 martin_yahoo 閱讀(4835) 評(píng)論(3)  編輯 收藏 引用

評(píng)論

# re: C/C++混合編程 2009-03-03 20:44 夢(mèng)在天涯

不錯(cuò)!很有用
在《C++編程思想》中有提到
extern "C"
{
#include "Utility.h"
}!  回復(fù)  更多評(píng)論   

# re: C/C++混合編程 2009-03-05 22:46 cdy20


c+上c頭文件名,也可以
比如#include<cstdio>........  回復(fù)  更多評(píng)論   

# re: C/C++混合編程[未登錄](méi) 2009-03-05 23:20 martin_yahoo

@cdy20
只不過(guò)是在c頭文件中已經(jīng)加上了如下類似的語(yǔ)句:
#ifdef _c_plus_plus
extern "C"{
#endif
.....
#ifdef _c_plus_plus
}
#endif

如果在c語(yǔ)言的頭文件中加上述語(yǔ)句, 就應(yīng)象采用隨筆中提到的做法.
  回復(fù)  更多評(píng)論   


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲最新色图| 欧美大成色www永久网站婷| 亚洲欧美日韩一区二区三区在线观看 | 亚洲日本成人女熟在线观看| 久久成人国产| 久久裸体视频| 欧美.www| 欧美色视频日本高清在线观看| 欧美日韩性生活视频| 国产精品第13页| 国产视频一区二区在线观看| 经典三级久久| 一区二区三区国产| 久久xxxx精品视频| 欧美激情日韩| 亚洲小说欧美另类婷婷| 久久久亚洲综合| 欧美日韩色综合| 国产一区二区三区在线观看精品| 亚洲高清不卡在线| 中文亚洲欧美| 久久久久久亚洲精品中文字幕| 欧美激情一区二区三区| 在线亚洲欧美专区二区| 欧美在线网站| 欧美日韩美女在线| 激情久久久久久久| 一本色道精品久久一区二区三区 | 韩国视频理论视频久久| 亚洲欧洲日本在线| 亚洲永久在线| 欧美国产日韩视频| 午夜精品一区二区三区四区| 欧美成人精品1314www| 国产精品腿扒开做爽爽爽挤奶网站| 一区在线观看视频| 中文精品视频一区二区在线观看| 久久久久久久97| 在线天堂一区av电影| 免费日韩一区二区| 国产一区二区福利| 亚洲男人av电影| 亚洲国产精品激情在线观看| 亚洲女性裸体视频| 欧美理论在线播放| 18成人免费观看视频| 久久大香伊蕉在人线观看热2| 亚洲国产高清在线观看视频| 久久精品在线观看| 国产日韩欧美综合一区| 亚洲一区二区免费看| 亚洲国产精品久久久| 久久艳片www.17c.com| 国产日本欧美一区二区| 亚洲一区激情| 99国产精品久久久| 久久九九99视频| 在线视频你懂得一区| 免费高清在线一区| 欧美亚洲视频一区二区| 国产精品久久网站| 中文亚洲字幕| 日韩午夜激情| 欧美日本一区二区三区| 亚洲免费激情| 亚洲三级电影全部在线观看高清| 麻豆精品一区二区av白丝在线| 在线视频成人| 免费日韩视频| 免费视频亚洲| 亚洲区在线播放| 欧美激情无毛| 欧美精品国产| 亚洲图片欧洲图片日韩av| 99视频在线观看一区三区| 欧美日韩在线一区| 亚洲欧美精品在线| 亚洲午夜在线观看| 国产一区二区在线免费观看| 久久久久久亚洲综合影院红桃 | 亚洲一区在线免费观看| 欧美午夜精品久久久久久久| 亚洲一区二区高清| 欧美一乱一性一交一视频| 国产亚洲欧美日韩日本| 嫩草伊人久久精品少妇av杨幂| 久久这里只精品最新地址| 亚洲欧洲精品一区二区三区| 日韩视频一区二区三区| 国产精品网站一区| 久久久xxx| 欧美精品国产精品| 久久国产直播| 麻豆精品在线视频| 亚洲午夜成aⅴ人片| 性做久久久久久| 亚洲激情在线观看| 一区二区三区久久网| 黑人巨大精品欧美一区二区小视频 | 一区国产精品| 99re热精品| 国产视频一区免费看| 欧美激情国产日韩| 国产精品久久久久aaaa樱花| 另类成人小视频在线| 欧美视频一区二区| 麻豆成人av| 国产精品久久久久久久久婷婷 | 欧美电影免费观看| 亚洲国产一区在线观看| 亚洲欧美日韩成人高清在线一区| 亚洲高清免费在线| 亚洲天堂成人在线观看| 亚洲欧洲精品一区二区| 亚洲欧美区自拍先锋| 99精品免费视频| 久久久久久亚洲精品不卡4k岛国| 一区二区欧美日韩视频| 久久综合网络一区二区| 欧美在线中文字幕| 欧美三级午夜理伦三级中视频| 欧美国产日韩精品| 一区在线视频观看| 香蕉精品999视频一区二区| 亚洲香蕉在线观看| 欧美日韩国内| 亚洲精品久久久久久一区二区| 亚洲成人在线| 久久香蕉国产线看观看av| 久久久国产午夜精品| 国产精品视频午夜| 亚洲午夜精品在线| 中文国产亚洲喷潮| 欧美肉体xxxx裸体137大胆| 亚洲黄色大片| 亚洲精品国产拍免费91在线| 久久人人爽爽爽人久久久| 久久精彩视频| 国产在线精品二区| 久久久99爱| 免播放器亚洲一区| 91久久精品视频| 欧美成ee人免费视频| 亚洲激情综合| 日韩一级网站| 欧美性色视频在线| 亚洲一区在线免费| 久久精品国产99精品国产亚洲性色| 国产精品中文字幕欧美| 亚洲欧美中文日韩在线| 久久精彩视频| 在线日韩欧美视频| 欧美精品国产精品日韩精品| 亚洲美女少妇无套啪啪呻吟| 亚洲亚洲精品在线观看 | 亚洲黄色在线| 欧美另类videos死尸| 一本一道久久综合狠狠老精东影业| 亚洲综合精品| 在线 亚洲欧美在线综合一区| 久久这里有精品视频| 亚洲乱亚洲高清| 午夜精品理论片| 国内精品一区二区三区| 欧美jjzz| 亚洲一区二区三区免费观看| 麻豆成人在线播放| 亚洲美女中文字幕| 国产伦精品一区| 裸体女人亚洲精品一区| 日韩亚洲欧美在线观看| 欧美在线视频在线播放完整版免费观看| 国产一级一区二区| 欧美电影免费观看网站| 亚洲在线免费| 亚洲嫩草精品久久| 久久本道综合色狠狠五月| 美女视频网站黄色亚洲| 亚洲人成网站色ww在线 | 91久久夜色精品国产九色| 欧美日韩免费看| 欧美在线91| 亚洲伦伦在线| 蜜臀久久99精品久久久画质超高清 | 欧美大片一区二区三区| 亚洲一区二区黄色| 欧美成人午夜| 久久精品国产清高在天天线| 一本色道**综合亚洲精品蜜桃冫 | 亚洲伊人观看| 亚洲日韩欧美视频一区| 久久先锋影音| 午夜国产精品视频| 在线观看亚洲视频| 国产欧美va欧美不卡在线| 欧美精品二区三区四区免费看视频| 久久九九久精品国产免费直播| 国产精品99久久久久久久久| 欧美激情一二三区| 美腿丝袜亚洲色图|