江山如画

记录成长的足迹

简单理解extern "C"

    首先明确一点就是以.c为扩展名的源文件a.c(a代表文件名),vs按照C的编译方式进行编译;以.cpp为后缀的源文件a.cpp,按照C++的编译方式进行编译,而C++是面向对象的,支持函数重载,所以编译器对函数的处理和C有所不同。这个时候如果在另外一个源文件b.cpp中包含a.h时就会出现”无法解析的外部符号错误“,原因就是在b.cpp中a.h中的函数按照C++编译方式进行处理,在a.c中函数按照C的方式进行处理,所以找不到对应函数的定义(编译器处理后的函数名不同)。这时就需要extern ”C"对a.h进行包含,告诉编译器a.h中的函数按照C方式进行编译。

//a.h
void TestExternC();
//a.c
#include "a.h"
#include <stdio.h>
void TestExternC()
{
    printf("test\n");
}
//b.cpp
extern "C"
{
    #include "a.h"
}
int main()
{
    TestExternC();
    return 0;
}


阅读更多
个人分类: 编程随笔
上一篇读《游戏之旅-我的编程感悟》笔记
下一篇LIB和DLL的区别与使用(转载)
想对作者说点什么? 我来说一句

extern “C”使用详解.doc

2010年04月19日 33KB 下载

没有更多推荐了,返回首页

关闭
关闭