C中的C文件与h文件辨析(转)】的更多相关文章

不知道大家有没有批量删除c文件和h文件中注释的需要,说起来搞笑,偶然翻出来早先写的一份,首先楼猪不是闲的蛋疼写这东西,工作需要,哪里要砖就要搬.冷门的东西大家需要的时候也不一定好找,分享给大家,省的自己写了. https://github.com/songjinli/deletenote 放心不会删除代码,可以指定删除文件或者目录下所有文件,不会覆盖当前文件,会生成一个以时间戳命名的备份.(还是建议大家自己做好一个备份,以防不测....) 可以删除所有的注释类型,如: 1. printf("%d…
1)h文件作用 1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明: 2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h). 2)h文件里应该有什么     常量,结构,类型定义,函数,变量申明. 3)h文件不应该有什么     变量定义, 函数定义. 4)extern问题     对于变量需要extern:     对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加static. 5)include包含问…
很多人对C语言中的 “文件包含”都不陌生了,文件包含处理在程序开发中会给我们的模块化程序设计带来很大的好处,通过文件包含的方法把程序中的各个功能模块联系起来是模块化程序设计中的一种非常有利的手段. 文件包含处理是指在一个源文件中,通过文件包含命令将另一个源文件的内容全部包含在此文件中.在源文件编译时,连同被包含进来的文件一同编译,生成目标目标文件.     很多人再初学时都会对这个很晕,怎么写文件件? 怎么包含才能避免重定义? 等等问题...       其实这个只要了解了文件包含的基本处理方法…
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:       1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.(生成.exe文件) 编译器在编译时是以C文件为单位…
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:       1.预处理阶段 2.词法与语法分析阶段 .编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.(生成.exe文件) 编译器在编译时是以C文件为单位进…
最近几天两次触发VS中误改UE4源码头文件,导致需要编译大量源码的情况:再好的习惯也有不可靠的时候,还是需要可靠方案解决这个问题:官方提供了预编译版本(即从Launcher中下载的版本),但是对于程序来说,使用源码编译会比较好:比如不能在Editor中启用Dedicated Server. UE4引擎本身C++源码已经够庞大了,加上UHT生成的反射系统相关代码,整个引擎编译时间较长: 目前使用的电脑,是以前做Cocos2d-x时使用的,CPU为8代i5,Editor+Programs编译接近2个…
            "如有不正确之处,请指出,谢谢"       --Mood 对于一个项目,我们应该要很好的处理众多的.c和.h文件. 1.通过头文件调用库功能:#include <stdio.h>       在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可. 2.人为定义的.h文件:#include "avformat.h" 一般提供了结构体的声明或者定义,函数的声明.枚举的声明或者定义.宏变量的定义等. 而其定…
//a.h void foo(); //a.c #include "a.h" //我的问题出来了:这句话是要,还是不要? void foo() { return; } //main.c #include "a.h" int main(int argc, char *argv[]) { foo(); ; } 今天看到这个问题,很有意思,记录下来复习有些遗忘的知识点. 先说答案,这句话是必须要的! 如果 a.c 中不写,那么编译器是不是会自动把 .h 文件里面的东西跟同…
参考:12 另一篇:c源文件中为什么要包含自己对应的头文件 问题 在进行C语言文件移植时,遇到 "通常是每个.c文件对应一个.h文件",之前了解过.h文件是头文件,用来引用其他文件的, 但在codeblocks C语言项目中找不到相应的.h文件: 所以,.c和.h文件到底什么关系,又怎么对应? 答案 .h文件的由来 "在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代,那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在很多.c(.cpp)文件中的声明语句…
C语言中 *.c和*.h文件的区别!  http://blog.163.com/jiaoruijun07@126/blog/static/68943278201042064246409/         这是HR面试我的一道题,没技术上含量,不过细想起来,还是C语言的最基本的知识!俗话说,目标决定动力,细节决定成败! C文件就是C语言系列的源文件,而H文件则是C语言的头文件,即C系列中存放函数和全局变量的文件,因为C中的函数是被封装起来的,即无法看到其代码. 子程序不要定义在*.h中.函数定义要…
一个简单的问题:.c和.h文件的区别 学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼: 子程序不要定义在.h中. 函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误. 3楼: .h只做声明,编译后不产生代码 4楼:  这样做目的是为了实现软件的模块化 使软件结构清晰,而且也便于别人使用你写的程序 纯粹用 C 语言语法的角度,你当然可以在 .h 中放任何东西,因为 #i…
使用芯片stm32f103zet6和stm32l151c8t6,在移植程序时发现,编译器提示u8未定义: 在Keil MDK 开发环境里,st定义无符号32位整形数据有很多种表示方法: 1 unsigned int 32——标准写法: 2 uint32_t ;  3 u32;  三种方式都是在表达同一个意思. 其实ST之所以这样多种方式表示同一个值,主要是减少代码编写工作量,同时也是为了向下兼容旧版本的程序.使用typedef多次重新定义罢了,关于这些定义可以看下面几个文件:core_cm4.h…
一个简单的问题:.c和.h文件的区别学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼:子程序不要定义在.h中.函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误. 3楼:.h只做声明,编译后不产生代码 4楼: 这样做目的是为了实现软件的模块化使软件结构清晰,而且也便于别人使用你写的程序 纯粹用 C 语言语法的角度,你当然可以在 .h 中放任何东西,因为 #include…
Objective-C声明在头文件和实现文件中的区别 转自codecloud(有整理) 调试程序的时候,突然想到这个问题,百度一下发现有不少这方面的问答,粗略总结一下: 属性写在.h文件中和在.m文件中有什么区别? Objective-C中有分类和类扩展的概念,而实现文件中的类声明实际上就是类扩展. @interface部分为类扩展(extension 其被设计出来就是为了解决两个问题的 定义类私有方法的地方,也就是下面说到的区别一 实现public readonly,private readw…
原文  http://blog.csdn.net/ithzhang/article/details/8119286 主题 C++  C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中.它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能.什么东西又可以放在cpp文件中.如果你忘记了或是压根就不明白,那么读过此文你会清晰无比!! 首先谈下 声明与定义的区别. 声明是将一个名称引入程序.定义提供了一个实体在程序中的唯一描述.声明和定义有时是同…
最近在弄摄像头,发现我在调用摄像头自带的函数的时候,库没连接上,于是经过高人指点,学习了一下lib静态链接库,dll动态链接库来补充一下自己的基础知识. 一.首先我们来介绍一下lib静态链接库. lib静态链接库是在编译时要用到,如果只需要编译源代码的话只要有.lib文件就好了.下面主要讲一下在vs2010中如何使用自己建立的.lib文件,以及如何使用lib文件. 1.建立lib文件:首先在vs当中先建一个工程文件,然后单击下一步,选择lib静态链接库,紧接着就是建立自己的.h文件了,在h文件当…
一个简单的问题:.c和.h文件的区别学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼:子程序不要定义在.h中.函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误. 3楼:.h只做声明,编译后不产生代码 4楼: 这样做目的是为了实现软件的模块化使软件结构清晰,而且也便于别人使用你写的程序 纯粹用 C 语言语法的角度,你当然可以在 .h 中放任何东西,因为 #include…
C语言头文件的作用 最近在工作当中遇到了一点小问题,关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题.学习C语言已经有好几年了,工作使用也近半年了,但是对于这部分的东西的确还没有深入的思考过.概念上还是比较模糊的,只是之前的使用大多比较简单,并没有牵涉到太复杂的工程,所以定义和声明还是比较简单而明了了的.但是最近的大工程让我在这方面吃到了一点点苦头,虽然看了别人的代码能够很快的改正,但是这些改正背后的原因却不知道.我想大多数喜欢C语言的程序员应该是和我一样的,总喜欢去追究程序问题…
.h头文件和.c文件的作用和区别 在小工程中,.h的作用没有得到充分的使用,在大工程中才能充分体现出.h文件的作用. .h和.c文件都是代码.头文件好处有: 一:头文件便于共享,只需要添加一句“include”就能包含. 二:如果不想暴露源代码可以把.c文件编译成.a文件或.so文件发给别人用,然后把.h文件作为使用的说明书.所以,一般情况下,.h里面的全都是声明.c里面的实现,.h一般包含变量定义,结构体的定义,函数声明等……. 有了.h文件,工程就可以编译了,有了.a或.so等库文件工程就可…
1.sdf 这些是工程中的中间,用于预编译等作用,最终可执行文件是不需要的,默认情况下,删除后重新编译还会生成.如果不需要,在Visual Studio里进入如下设置: 进入"Tools > Options",选择"Text Editor > C/C++ >Advanced": 然后找到"Fallback Location".然后把"Always use Fallback Location"和"Do…
 .c和.h文件的区别 一个简单的问题:.c和.h文件的区别 学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼: 子程序不要定义在.h中. 函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误. 3楼: .h只做声明,编译后不产生代码   4楼: 这样做目的是为了实现软件的模块化 使软件结构清晰,而且也便于别人使用你写的程序 纯粹用 C 语言语法的角度,你当然可以在 .h…
预编译头文件的由来 也许请教了别的高手之后,他们会告诉你,这是预编译头,必须包含.可是,这到底是为什么呢?预编译头有什么用呢? 咱们从头文件的编译原理讲起.其实头文件并不神秘,其在编译时的作用,就是把自己的所有内容直接“粘贴”到相应的 #include 语句处.其实,编译器在编译你的程序的时候,所做的第一件事,也就是展开所有的 #include 语句和 #define 语句. 头文件的出现,固然给书写程序带来了很大方便.可是到了 Windows 时代后,慢慢就呈现出一些问题了.几乎所有的 Win…
要理解.c文件与.h文件有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息 编译器在编译时是以c文件为单位进行的,也就是说如果你的项目中一个c文件都没有,那么你的项目将无法编译…
.h文件(头文件): 一般写一些函数声明.宏定义.结构体等内容. 其实就是将各个.c文件中重复的声明.宏定义.结构体,枚举变量等提取出来,放进一个新的文件中,便于其他.c文件共享这部分的代码,同时也方便变量.结构体和声明的修改.由于常放置于文件的开头,因此称为头文件. .c文件(程序文件):其是程序文件,内含程序的具体实现. 实际上.h文件和.c文件没有实质性的区别,只是后缀不一样,用于区别这两者,后来变成了一种编程规范,一般一个驱动或者说一个.c文件通常伴随一个.h文件,当另一个.c文件需要使…
linux下c语言工程: c文件:主要每个模块的原代码都在c文件中. h文件:每个c文件都跟着一个h文件,h文件的作用是放着c文件中函数的声明,结构体的定义,宏的定义等. o文件:目标文件.每个文件经过编译都会形成一个目标文件(二进制文件),多个目标文件链接后才能形成可执行文件. o文件如何形成: gcc -c a.c 可执行文件: 不论是c文件还是o文件,都是无法执行的,最终还要生成可执行的文件. gcc  a.c b.c c.c -o run  将c文件编译后链接,生成可执行文件 gcc a…
添加步骤 1.-Qt Creator中,"项目"------"添加库"2.把静态库和动态库文件放到项目文件夹中3.在.pro文件中会添加如下代码: - 添加动态库:如:lipsap.so (不需要添加路径) LIBS+=-L$$PWD/......l (指定库的名称) (熟悉Linux语言的知道,PWD是当前路径的意思) - 添加静态库:(修改一下)如:halcon.a win32:LIBS+=-L$$PWD/lib....../-lhalcon (不用带后缀文件名…
例如:github.com\ethereum\go-ethereum\crypto\secp256k1 是一个CGO项目 通过govendor add +external只能引入secp256k1下的.go文件,.h文件无法引入,需要手工copy过来.…
转自:https://blog.csdn.net/dcrmg/article/details/53427181 静态链接.动态链接 静态库和动态库分别应用在静态链接方式和动态链接方式中,所谓静态链接方式是指在程序执行之前完成所有的链接工作,把静态库一起打包合入,生成一个可执行的目标文件(EXE文件).所谓动态链接方式是指可执行目标文件在执行过程中才去加载调用相关功能函数,即在需要时才按需调用,是动态使用的. 静态库.动态库.隐式链接和显示链接中操作对象都是库,那么什么是库? 库 库是已经提前写好…
静态链接.动态链接 静态库和动态库分别应用在静态链接方式和动态链接方式中,所谓静态链接方式是指在程序执行之前完成所有的链接工作,把静态库一起打包合入,生成一个可执行的目标文件(EXE文件).所谓动态链接方式是指可执行目标文件在执行过程中才去加载调用相关功能函数,即在需要时才按需调用,是动态使用的. 静态库.动态库.隐式链接和显示链接中操作对象都是库,那么什么是库? 库 库是已经提前写好的.现有的,可以复用的代码,本质上来说库是一种经过编译生成的可执行代码的二进制形式,可以被操作系统载入内存执行.…
因为我在工作的过程中,使用的是第三方提供的库,但是如何将这些库添加到QT的工程中,是个问题,让我恼火了很久,怎么弄都是错的. 下面,我会对这个问题,进行叙述,希望其他人第一次遇到这种问题的时候,可以轻易的解决. 一.添加第三方的头文件 这个问题再简单不过了,不过我还是要说下. 首先,添加头文件  #include "ControlCAN.h" 然后,再将这个头文件放到工程的目录下,就OK了,非常的简单 二.添加.lib文件 首先,将.lib文件放到对应的工程目录下(当然,放到其他路径也…