搜索
bottom↓
回复: 14

在main.c里 直接使用包含 *.c文件,这样好吗?

[复制链接]

出0入0汤圆

发表于 2013-11-16 23:38:44 | 显示全部楼层 |阅读模式
在main.c里  直接使用包含 *.c文件,这样好吗?
是不是 弄个声明的头文件 来包含 使用更好呢 ?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-11-16 23:42:50 | 显示全部楼层
必须的。。我是也是比较习惯每个模块分开,每个模块分别对应 一个c 文件 一个h文件,然后用的时候 直接包含 头文件即可 ,头文件做好防止重复包含 的宏就ok了。。感觉这样比较清晰

出0入42汤圆

发表于 2013-11-17 00:05:52 | 显示全部楼层
项目中敢于包含c文件的,直接开了...

记得搞清楚何谓定义, 何谓声明. 否则加了.h也还有当前包含c带来的这些问题

出0入0汤圆

发表于 2013-11-17 00:50:02 来自手机 | 显示全部楼层
有些叫兽写的书,例子都敢包含.c

出0入0汤圆

发表于 2013-11-17 01:01:46 | 显示全部楼层
你有办法的话,可以把.c文件和.h文件统一成一个文件啊, 很多高级语言都是这样的嘛

出0入0汤圆

发表于 2013-11-17 01:30:55 来自手机 | 显示全部楼层
语法上是可以的,但规范上不推荐。

出0入0汤圆

发表于 2013-11-17 07:25:38 来自手机 | 显示全部楼层
这是一个坏习惯!

出0入4汤圆

发表于 2013-11-17 08:29:07 来自手机 | 显示全部楼层
坏习惯,不推荐。一般.c只包含.h文件

出0入0汤圆

发表于 2013-11-17 10:39:13 | 显示全部楼层
一般是在file1.c里面定义函数,file1.h里声明,file2.c只要引用file1.h即可

出0入0汤圆

发表于 2013-11-17 12:02:02 | 显示全部楼层
3楼说出点儿东西,能详细说下就好了
其他几楼的朋友只是知道该这么做,不知道为什么这么做
ps:我也不知道为什么

出0入93汤圆

发表于 2013-11-17 12:24:32 | 显示全部楼层
onepower 发表于 2013-11-17 01:01
你有办法的话,可以把.c文件和.h文件统一成一个文件啊, 很多高级语言都是这样的嘛 ...

以下实例被大量应用,但是极其不推荐!!!

有啊,微软就敢这么干。MFC/ATL/WTL中充满了这样的代码。但是他又不是千篇一律的这样的代码,.h、.cpp还是有很多的,STL都没有后缀名的,偶尔还要弄个.inl之类的文件包含一下。
像三楼说的,何为声明,何为定义,对于微软来说,全是狗屁。
和楼主唯一不同的地方是,楼主都放到.c文件中去了,微软放到.h文件中去了。

为了防止变量重复定义,微软特意加了__declspec(selectany) 声明;为了防止函数重复定义,它们就会把它定义成类的静态方法。



另外一种.c中包含.c代码的情形,是因为特殊需求。主要就是在纯C语言中支持泛型,不过这样的应用极少。

出0入0汤圆

发表于 2013-11-17 13:24:00 | 显示全部楼层
一个人全包的,只编译器没意思,咋弄都行。若是团队打拼,不能干想着自己痛快,得为别人着想一下

出0入0汤圆

发表于 2013-11-17 14:10:31 | 显示全部楼层
真心不推荐直接包含*.C

出0入0汤圆

发表于 2013-11-17 15:39:06 | 显示全部楼层
本帖最后由 monkerman 于 2013-11-17 15:41 编辑

非常不好。
但是也可以这么用,凡事无绝对。只要代码看起来清晰明了,看你怎么折衷取舍了。要做到被包含的 .c 文件中每个函数和全局变量加上 static 修饰. 也可以达到高内聚低耦合,模块划分清晰。
看过一个程序就是这么用的,单片机带俩同样的网卡,外部总线访问,就是把网卡公共的底层驱动放在 .c 中, 网卡 1.c 和网卡 2.c 直接包含 .c 文件。在 1.c 和 2.c 中通过宏分别配置俩地址就行。
代码都不用更改。因为都是本文件作用域的。更重要的是如果要带 3 个或者 4 个网卡直接包含,init_nic1/2/3/4改个数字就行,删除的时候直接在程序中去除对应数字的函数,文件直接咔嚓,都不带影响其他程序的。
图懒省事,堪称一绝。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-11 04:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表