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

martin

thinking

常用鏈接

統(tǒng)計

software

最新評論

C/C++混合編程

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

注解:
1.1 LINT_ARGS 1表示在檢查C語言中的函數(shù)原型時,要對函數(shù)原型的參數(shù)進行檢查. 
1.2. "{ }" 中包含的頭文件為C語言中的頭文件.
1.3.extern "C" 告訴鏈接器,這些頭文件中的函數(shù)被當做C語言中的函數(shù)來處理.
 
下面以一個實例加以說明:
下面為一個C語言的頭文件(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.當C文件要用到C++語言某個類中的方法時,可以采用下列方法:
2.1 在cpp文件中用下列方式定義函數(shù):
extern "C" returnType FunName(parameters list).
 
2.2 然后在相應的頭文件中進行聲明:
extern returnType FunName(parameters list);
 
2.3 在相應的.c文件中包含該頭文件,然后直接利用相應的函數(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)用實例
在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 閱讀(4844) 評論(3)  編輯 收藏 引用

評論

# re: C/C++混合編程 2009-03-03 20:44 夢在天涯

不錯!很有用
在《C++編程思想》中有提到
extern "C"
{
#include "Utility.h"
}!  回復  更多評論   

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


c+上c頭文件名,也可以
比如#include<cstdio>........  回復  更多評論   

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

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

如果在c語言的頭文件中加上述語句, 就應象采用隨筆中提到的做法.
  回復  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   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>
            欧美色视频在线| 国产精品久久久久久超碰| 国产一区欧美日韩| 欧美一区免费视频| 亚洲欧美日韩综合aⅴ视频| 国产精品极品美女粉嫩高清在线| 9久草视频在线视频精品| 91久久夜色精品国产九色| 欧美大秀在线观看| 亚洲视频一二| 欧美一级播放| 在线看无码的免费网站| 亚洲国产天堂久久国产91| 欧美激情精品久久久久久大尺度| 亚洲免费激情| 亚洲欧美国产va在线影院| 一区二区在线视频| 亚洲日本va在线观看| 国产精品hd| 久久久精品一品道一区| 能在线观看的日韩av| 一区二区三区日韩| 久久国产一二区| 日韩视频第一页| 亚洲欧美综合精品久久成人| 影音先锋中文字幕一区| 亚洲清纯自拍| 国内精品视频在线播放| 亚洲片区在线| 国产在线观看91精品一区| 亚洲国产成人高清精品| 国产精品视频精品视频| 欧美成人一区二区在线| 国产精品夜夜嗨| 最新精品在线| 国产亚洲综合在线| 亚洲精品四区| 一区二区亚洲精品| 亚洲图片激情小说| 日韩网站免费观看| 欧美一区免费视频| 亚洲性xxxx| 久久只精品国产| 欧美影院在线播放| 欧美午夜欧美| 亚洲国产免费| 悠悠资源网亚洲青| 亚洲欧美一级二级三级| 一本色道久久88综合亚洲精品ⅰ| 久久国产日韩欧美| 午夜精品亚洲一区二区三区嫩草| 欧美14一18处毛片| 欧美**字幕| 国产真实精品久久二三区| 亚洲一区视频在线| 亚洲网站在线看| 欧美日韩国语| 亚洲高清视频在线| 亚洲高清视频一区二区| 欧美伊人久久| 久久精品在这里| 国产精品自拍一区| 亚洲综合99| 欧美一区二区福利在线| 国产精品久久久久一区二区| 亚洲精品一区久久久久久| 亚洲人屁股眼子交8| 老司机午夜精品| 亚洲成色www8888| 亚洲精品乱码久久久久| 欧美国产高清| 日韩视频―中文字幕| 亚洲免费观看| 欧美日产国产成人免费图片| 亚洲精品在线观看免费| a4yy欧美一区二区三区| 欧美午夜激情小视频| 在线亚洲国产精品网站| 亚洲永久精品大片| 国产精品入口福利| 亚洲免费视频一区二区| 久久久91精品| 1024成人网色www| 欧美成人精品三级在线观看| 亚洲国产视频一区二区| 亚洲深夜福利网站| 国产精品视频内| 久久精品国产清高在天天线| 欧美18av| 在线一区二区三区做爰视频网站 | 欧美国产精品劲爆| 亚洲毛片在线| 国产精品久久久久久久久动漫| 亚洲欧美99| 免费h精品视频在线播放| 亚洲美女av在线播放| 欧美色视频一区| 欧美一区二视频| 亚洲福利久久| 亚洲曰本av电影| 国内揄拍国内精品少妇国语| 免费视频一区| 亚洲在线一区二区三区| 看欧美日韩国产| 一本久道综合久久精品| 国产日本欧美一区二区| 免费成年人欧美视频| 一区二区精品在线观看| 快播亚洲色图| 亚洲欧美大片| 亚洲人成在线免费观看| 国产美女精品视频| 欧美精品久久久久久久免费观看| 亚洲欧美精品一区| 亚洲日本中文字幕| 久久躁日日躁aaaaxxxx| 亚洲一区二区三区激情| 亚洲国产精品ⅴa在线观看 | 欧美黑人在线观看| 亚洲欧美日韩国产另类专区| 亚洲高清久久网| 久久久精品性| 欧美一级欧美一级在线播放| 亚洲精品综合在线| 影音先锋亚洲视频| 国产亚洲一区在线播放| 国产精品国产亚洲精品看不卡15| 久久一综合视频| 午夜一区在线| 亚洲一区在线播放| 99综合电影在线视频| 亚洲国产精品va在线观看黑人| 久久久久久网| 久久国产精品亚洲77777| 亚洲男女自偷自拍图片另类| 亚洲人成网站999久久久综合| 国内精品嫩模av私拍在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩国产综合一区二区| 免费日韩精品中文字幕视频在线| 欧美中文在线观看| 欧美一区国产二区| 欧美在线播放视频| 午夜国产一区| 先锋a资源在线看亚洲| 午夜免费在线观看精品视频| 亚洲一区欧美| 亚洲一区二区三区四区在线观看 | 亚洲尤物影院| 亚洲一区二区三区乱码aⅴ| 99国产精品久久久久久久久久 | 久久精品国产精品| 久久黄色级2电影| 久久久999精品| 久久久之久亚州精品露出| 99精品99久久久久久宅男| 亚洲国产精品第一区二区三区| 国产婷婷色综合av蜜臀av | 久久精品国产第一区二区三区| 亚洲女与黑人做爰| 午夜精品一区二区三区在线| 香蕉成人伊视频在线观看| 欧美在线视频二区| 久久精品一二三| 欧美成人精品一区二区| 欧美国产视频在线观看| 欧美日一区二区三区在线观看国产免| 欧美日韩中文字幕精品| 国产精品男女猛烈高潮激情| 国产精品每日更新| 国产日韩一区二区三区| 一区视频在线| 日韩一级黄色大片| 亚洲欧美综合精品久久成人| 久久久久久久久岛国免费| 亚洲电影观看| 亚洲社区在线观看| 久久精品综合网| 欧美精品高清视频| 国产欧美日韩亚州综合| 亚洲激情视频网| 午夜视黄欧洲亚洲| 欧美二区在线| 亚洲一二三区在线| 欧美成人国产| 国产偷久久久精品专区| 亚洲激情视频在线播放| 欧美一进一出视频| 欧美激情五月| 午夜精品久久| 欧美日本精品在线| 激情婷婷欧美| 亚洲女爱视频在线| 亚洲国产精品va| 午夜在线播放视频欧美| 欧美日韩黄视频| 亚洲国产精品成人综合| 欧美一区二区高清在线观看| 亚洲人成网站影音先锋播放| 欧美在线观看一二区|