`
bbls
  • 浏览: 61479 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

.c与.cpp文件的一点区别

阅读更多

在编译源文件时,C编译器和C++编译器都会对符号(函数或变量)名作某些修正,但两者采用的修正方法不同,所以两者生成的目标文件不能互相链接。在C++中使用extern "C"可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接。

通常c/c++编译器会根据文件后缀来选择符号修正,所以最好把c的代码放到.c文件中,把c++的代码放到.cpp文件中。

我用VC++6.0创建动态库,做了以下试验。

在test.cpp中输出c函数,如下:
1、新建Win32 Dynamic-Link Library
2、输出函数
extern "C" _declspec(dllexport) void far test();

void far test()
{
 
}

而在test.c中输出c函数,就可以这样,如下:
1、新建Win32 Dynamic-Link Library
2、输出函数
_declspec(dllexport) void far test();

void far test()
{
 
}

看来.c和.cpp还是有很大区别的

分享到:
评论

相关推荐

    bmp简单验证码程序.cpp

    bmp简单验证码程序.cpp 简单验证码是指验证码图片里的字符,固定不变,或者变化很小的验证码,比如:字符上会有一些干扰点干扰线等情况,或者只有少数几种字体变化和字体大小变化。 这里给出源代码都是非常简单的...

    Linux中gdb查看core堆栈信息

    以 下是注意事项: 1):如果使用了/Yu,就是说使用了预编译,我们在每个.cpp文件的最开头,我强调一遍 是最开头,包含 你指定产生pch文件的.h文件(默认是stdafx.h)不然就会有问题。如 果你没有包含这个文件,就告诉...

    终于搞懂了,预编译头文件

    以 <br>下是注意事项: <br>1):如果使用了/Yu,就是说使用了预编译,我们在每个.cpp文件的最开头,我强调一遍 <br>是最开头,包含 你指定产生pch文件的.h文件(默认是stdafx.h)不然就会有问题。...

    迷你版俄罗斯方块C++实现

    虽然是用C++写的,但是没有用到类,大部分都 是C语言的东西。用GDI函数,写的。一共三个文件,一个头文件:Teris.h声明了一些数据类型和函数,定义了一些常量。一个Function.cpp定义了需要用到的函数。一个Teris.cpp...

    STM32Cube-Cpp-programming-example:本示例将向您展示如何使用STM32 HAL驱动程序和STM32CubeMX生成的代码框架在C ++中对STM32进行编程

    STM32Cube-Cpp编程示例 版权所有(C)Ian Jin 推特:@iancanadaTT 本示例将向您展示如何使用STM32 HAL驱动程序和STM32... 在.hpp和.cpp中创建用户C ++文件 这个例子准确地显示了如何做到这一点。 硬件平台: STM3

    ASM汇编软件RadASM(汇编编译器) 2.2.1.9 汉化版_20161223.zip

    的一些工程一并删除,请谨慎使用卸载(默认在Masm和Cpp中新添加的工程不会被删除,但还是小心一点 比较好)。若必须要卸载的话,请把你安装后新建的工程及配置文件备份到其它目录,再执行卸载! 2、这个版本我去掉了...

    能使用boost.python的MinGw(GCC)动态链接库

    这些文件其实在boost的目录下面和C:\Python27\include目录中. 为了使用方便,将整个\boost_1_49_0\boost\目录复制到MinGw的include目录下面; 将C:\Python27\include目录下的文件全部复制到MinGw的include目录下面...

    潮潮源代码统计工具(V1.0),自己写的

    ④:软件统计完成后,如果没有选择生成文件路径,默认出力结果在C:\temp文件夹下。 ⑤:统计文件的的命名方式是:sourcecounter_+日期+时间+类型。例如: (sourcecounter_2009-04-05 20-04-12.csv 或者 ...

    代码语法错误分析工具pclint8.0

    1.将pclint.rar解压至c:\, 这样lint文件就位与c:\pclint(安装目录)下了。 2.将c:\pclint\lnt 下的3个文件lib-w32.lnt,env-vc6.lnt,co-msc60.lnt拷贝至c:\pclint下, 再在安装目录下创建std.lnt和options.lnt两个...

    Synth.cpp:模块化音乐合成器的C ++代码可在Teensy 3.1上使用

    C ++中的模块化音乐合成 可文档。 历史背景 早在上高中时,我的一个朋友就是一个叫( )的家伙,他的父亲把他带入了1970年代穆格(Moog)风格的模拟电子音乐合成器。 戴夫(Dave)在他位于新罕布什尔州纳舒厄的家中...

    经典批处理编程简明教程

    批 处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的 exe文件才可以称之为...

    Editplus 3[1].0

    Syntax file=C:\Program Files\EditPlus 2\cpp.stx 那么,就把”C:\Program Files\EditPlus 2\“替换成你当前软件的路径。 其它提示找不到文件的解决方法同上 【10】软件技巧——设置editplus支持其它文字,如韩文 ...

    Vim插件vim-switchtoinc.zip

    推荐按键绑定autocmd FileType c,cpp,objc,objcpp nmap <silent> <F4> :wall<CR>:A<CR>autocmd FileType c,cpp,objc,objcpp nmap <silent> <C-F4> :wall<CR>:AV<CR>autocmd FileType c,cpp,objc,objcpp nmap ...

    贪吃蛇小游戏

    贪吃蛇小游戏 共享使用 C++编写 虽然是用C++写的,但是没有用到类,大部分都 是C语言的东西。用GDI函数,写的。一共三个文件,一个头文件:Teris.h声明了一些数据类型和函数,定义了一些常量。一个Function.cpp定义...

    代码统计插件 eclipse plugin java

    默认情况下已经可以统计.java、.C、.h、.CPP 、.C++和.AS 类型文件的统计了。还可以统计.properties文件 3、可以进行统计类型的自定义。点击统计类型配置按钮,在弹出的对话框左边是剩余可 配置的文件类型,右边...

    editplus 代码编辑器html c++ jsp css

    Syntax file=C:\Program Files\EditPlus 2\cpp.stx 那么,就把”C:\Program Files\EditPlus 2\“替换成你当前软件的路径。 其它提示找不到文件的解决方法同上 【10】软件技巧——设置editplus支持其它文字,如韩文 ...

    Linux程序设计 第4版.haozip01

    3.4.5 其他与文件管理有关的系统调用 88 3.5 标准i/o库 91 3.5.1 fopen函数 91 3.5.2 fread函数 92 3.5.3 fwrite函数 92 3.5.4 fclose函数 92 3.5.5 fflush函数 93 3.5.6 fseek函数 93 3.5.7 fgetc、getc和...

    Linux程序设计 第4版.haozip02

    3.4.5 其他与文件管理有关的系统调用 88 3.5 标准i/o库 91 3.5.1 fopen函数 91 3.5.2 fread函数 92 3.5.3 fwrite函数 92 3.5.4 fclose函数 92 3.5.5 fflush函数 93 3.5.6 fseek函数 93 3.5.7 fgetc、getc和...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    找到mingwm10.dll 文件,将其复制到C:\WINDOWS\system 文件夹下,即可。下 面再提示缺少什么dll 文件,都像这样解决就可以了。 二、Qt Creator 编写多窗口程序(原创) 实现功能: 程序开始出现一个对话框,按下按钮...

Global site tag (gtag.js) - Google Analytics