打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C语言多个源文件编译

多源文件编译:

新建一个 main.c

#include #include int main(){ int i = myMax(20,40); printf('i = %d',i); system('pause'); return0;}

然后再创建一个 a.c

int myMax(int a,int b) { if(a>b) return a; return b;}

然后编译

如果不是 visual studio C++ 的环境的话,会报错的。所以我用了dev C++就报了错。

错误信息:

8 21 F:\c++codeInDev\多源文件编译\main.c [Error] 'myMax' was not declared in this scope

说 myMax 没这个函数。

所以 需要一个 函数的声明。

main.c 代码:

#include #include int myMax(int a,int b);int main(){ int i = myMax(20,40); printf('i = %d',i); system('pause'); return0; }

第二种写法——采用加载头文件的方式:

main.c 代码:

#include #include 'a.h'int main() { printf('较大的数字是:%d\n',myMax(20,30)); return0;}

a.h代码:

int myMax(int a,int b);

a.c 代码:

int myMax(int a,int b){ if(a>b) return a; return b;}

扩展:

main.c代码

#include #include 'a.h' #include 'b.h'int main() { printf('较大的数字是:%d\n',myMax(20,40)); printf('两数之和是:%d\n',myAdd(20,50)); return0;}

a.c代码:

int myMax(int a,int b){ if(a>b) return a; return b;}

a.h 代码:

int myMax(int a,int b){ if(a>b) return a; return b;}

b.h 代码:

int myAdd(int a, int b);

b.c 代码:

int myAdd(int a, int b){ return a+b;}

运行结果示例:

马上要引出一个 别的事儿:

dev竟然不可以复制文件夹,估计有什么隐含设置。。。在 android里面 和 javaweb里面都有这么一个东西的。android太久不弄有点儿忘记了,在 javaweb里面,选中一个项目,摁住alt+Enter,然后 搜索 web。然后再修改这个 项目的名称,否则当前复制的项目会覆盖之前的那个项目。在发布之后】

那就在 这个 上面改吧。。。

如果 b.h 里面包含了 a.h 那么会出现什么样的状况呢?

修改后的b.h:

#include 'a.h'int myAdd(int a, int b);

好吧,竟然没有问题。

但是 理论上这样多包含了一个 int myMax(int a,int b);就相当于重复的声明在main.c了照理说是不可以的。

所以诞生了 #ifndef #define #endif

所以把程序 写成这样:

好吧 就是 想引入这个 如果 没有定义的话,就定义 这样一个 概念。

示例代码://我们可以学着照抄人家的代码,人家的这种.h 文件基本上都是这样做的。完后看基本上都是 #endif 结尾的

修改的部分:

a.h 代码:

#ifndef _AH#define _AHint myMax(int a,int b);#endif

b.h 代码:

#ifndef _BH#define _BHint myAdd(int a, int b);#endif

这是 原来本身c语言里面提供的类库文件的书写格式,下面截了个图

可以看到人家也是这么操作的。

相关描述:

extern c++特有的!声明这段东西要以,C的方式编译。用在 dll的书写上,dll这个 东西真的是很神奇。是动态加载的类库文件。这种动态加载是在程序运行的时候,把当前这个 exe文件和exe所需要的dll文件一起在内存中开辟一块空间。所以这样就导致exe做出来可以很小。但是对于静态的lib来说。需要一起打包在exe文件中,这样exe就很大。并且每次改动都需要重新编译exe文件。但是对于dll的话,只需要重新编译这一部分,然后把dll放到对应目录下面,就可以了。并且,通常情况下,高级语言开发上层,逻辑部分很迅速。但是用c就很乏力,但是对于某些必须要操作硬件的部分就只能使用C开发好dll,然后可以让java等上层语言进行调用。这样的语言除了java还有 C++python等等.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python如何生成动态库dll文件 python怎么生成dll
.h头文件 .lib库文件 .dll动态链接库文件关系
Tiny C Compiler 嵌入式使用帮助
unity 3d
Unity 3D 调用DLL的方法
C程序中关于c和h的包含问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服