首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言头文件组织与包含原则

如非特殊说明,文中“源文件”指 * .c文件,“头文件”指 *.h文件,“引用”指包含头文件。 一、头文件作用 C语言里,每个源文件是一个模块,头文件为使用该模块的用户提供接口。...在预处理阶段,编译器将源文件包含头文件内容复制到包含语句(#include)处。在源文件编译时,连同被包含进来的头文件内容一起编译,生成目标文件(.obj)。..."C"修饰的变量和函数将按照C语言方式编译和连接,否则编译器将无法找到C函数定义,从而导致链接失败。...「【注3】extern "C"」 C++语言在编译时为实现函数重载,会结合函数名、参数数目及类型信息而生成一个中间函数名。...C语言中不支持extern "C"声明,在.c文件中包含extern "C"时会出现编译语法错误。 当然编译器也可以为其他语言提供链接说明。

4.8K32
您找到你想要的搜索结果了吗?
是的
没有找到

C语言---头文件

声明一下:以下源文件就是.c文件,头文件就是.h文件。 编程规范规定,头文件里面不能include其他文件,只能在源文件中include使用到的头文件,防止头文件重复包含。...这样就可以正常使用了,如果头文件包含头文件的话,只在源文件中包含,这样能使用吗?会不会报错? 例如:源文件mian.c包含头文件a.h和b.h,头文件b.h中需要引用a.h中的数据结构类型。...A_S; #endif a.h定义了一个关于学生的一个结构体类型,然后我们需要在b.h中使用这个类型,但是b.h中不直接包含内容如下: /*file: b.h*/ #ifndef __B_H__...main.c 内容如下: /*file: main.c*/ #include #include "a.h" #include "b.h" int main() { B_S.../a.out sb.b: 1 sb.sa.a: 99 如果我们main.c中的头文件包含a.h和b.h的位置调换一下,先包含b.h再包含a.h。

4K20

头文件包含问题

/blog.csdn.net/humanking7/article/details/79299045 ---- 先占个坑-后补 以前自己搭建起来的一个稍微大一点的项目,就会发现一些当初架构起来的问题,头文件包含乱用...,导致后期分外蛋疼,我遇到大致两种问题: 头文件全部包含,使得预编译会剔除某个头文件,导致结果:编译单个源文件没有问题,整体进行链接时,会发现找不到剔除的头文件定义的类或者变量; 接着,就把这个头文件的...#include"BB.h"写到#ifndef _AA_H_ /#define _AA_H_前面,这样到会导致下一个问题,头文件嵌套深度太深。...解决方法:头文件中#include的头文件尽量的少,不能太互相交融(这需要开始定义框架时,想清楚变量之间的关系和信息传递的方式),尽量把#include头文件写到源文件(cpp文件中)。

1.8K10

C语言头文件使用总结

o( ̄▽ ̄)ブ C语言头文件 C语言头文件一般包含了函数声明,宏定义,常量等代码。我们在使用#include引用头文件。可以被多个c文件引用,避免了重复代码,减少了错误。让代码更加规范。...A simple practice in CC++ 程序中,建议把所有的常量、宏、系统全局变量和函数原型写在头文件中,在需要的时候随时引用这些头文件。...但是这样并不标准,标准规定,包含标准头文件或系统头文件时应使用尖括号,包含自定义头文件时可使用双引号。...避免重复引用 经常在写代码的时候,不经意间,我们会引用同一个头文件两次,那么我们会遇到很多重复定义的错误,为了避免这样的事情发生,我们需要将头文件里的内容放到编译宏中 #ifndef CYONG_H #...公共头文件 在程序代码中,经常很多c文件会引用一些相同的头文件,这个时候,我们就可以定义一个包含这些相同头文件头文件common.h。

1.4K20

C语言头文件j解析

一、头文件作用 C语言里,每个源文件是一个模块,头文件为使用该模块的用户提供接口。接口指一个功能模块暴露给其他模块用以访问具体功能的方法。 使用源文件实现模块的功能,使用头文件暴露单元的接口。...在预处理阶段,编译器将源文件包含头文件内容复制到包含语句(#include)处。在源文件编译时,连同被包含进来的头文件内容一起编译,生成目标文件(.obj)。..."C"修饰的变量和函数将按照C语言方式编译和连接,否则编译器将无法找到C函数定义,从而导致链接失败。...「【注3】extern "C"」 C++语言在编译时为实现函数重载,会结合函数名、参数数目及类型信息而生成一个中间函数名。...C语言中不支持extern "C"声明,在.c文件中包含extern "C"时会出现编译语法错误。 当然编译器也可以为其他语言提供链接说明。

1.9K88

C++编程常用头文件及其包含函数汇总

是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。 ...当使用时,相当于在C中调用库函数,使用的是全局命名空间,也就是早期的C++实现;当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std...  #include   是C++里面的模板类 “集合”的头文件  set是C++标准库中的一种关联容器。...得到以ASCII码表示的时间 asctime  得到字符串表示的时间 ctime  得到指定格式的时间 strftime  #include  地区化: 本类别的函数用于处理不同国家的语言差异...地区控制 地区设置 setlocale  数字格式约定查询 国家的货币、日期、时间等的格式转换 localeconv  以上是用于原博主编程使用,属于不完整版本,完整版本请见:  C/C++常用头文件及函数汇总

1.2K00

为什么C语言会有头文件

前段时间一个刚转到C语言的同事问我,为什么C会多一个头文件,而不是像Java和Python那样所有的代码都在源文件中。...所以我在这将关于这个问题的相关内容写下来,希望给大家一点提示,也算是一个总结 include语句的本质 要回答这个问题,首先需要知道C语言代码组织问题,也就是我比较喜欢说的多文件,这个不光C语言有,...其实这个认识是错误的,C语言并没有规定include只能包含头文件,include的本质是一个预处理指令它主要的工作是将它后面的相关文件整个拷贝并替换这个include语句,比如下面一个例子 //add.cpp...所以这里又有一条约定,每个模块都放在统一的cpp文件中而该文件中相关内容的声明则放到与之同名的头文件中 其实我觉得这个原则在所有静态的、需要区分声明和实现的语言应该是都适用的,像我知道的汇编语言,特别是...C语言编译过程 在上面我基本上回答了为什么需要一个头文件,但是本质的问题还是没有解决,为什么像Python这类动态语言也有对应模块、多文件,但是它不需要像C那样要先声明才能使用?

2.1K50

C语言头文件防卫式声明

C语言一般提供三种预处理功能:宏处理、文件包含、条件编译。头文件防卫式申明中会用到条件编译中 #ifndef、#define、#endif 的用法。所以,首先价绍下条件编译。...,例如头文件 head2.h 中包含头文件 head1.h,头文件 head2.h 如下: #include "head1.h"; int g_head2 = 2; 此时编译就会出现重复定义的错误,这是因为源文件....cpp 包含头文件 head1.h、head2.h" ,head2.h 中也包含 head1.h头文件,所以head1.h 定义的 g_head1 被定义两次。...HEAD2_ #include "head1.h" int g_head2 = 2; #endif 修改后再次编译,通过并成功执行,使用#ifndef、#define、#endif 组合的防卫式声明,避免了头文件内容被多次...更多案例可以go公众号:C语言入门到精通

1.4K2519

google C++编程风格指南之头文件包含顺序

google C++编程风格对头文件包含顺序作出如下指示: (1)为了加强可读性和避免隐含依赖,应使用下面的顺序:C标准库、C++标准库、其它库的头文件、你自己工程的头文件。...不过这里最先包含的是首选的头文件,即例如a.cpp文件中应该优先包含a.h。首选的头文件是为了减少隐藏依赖,同时确保头文件和实现文件是匹配的。...如果先包含A.h就可以发现隐藏依赖,所以各种规范都要求自身的头文件放在第一个,就能发现隐藏依赖。解决办法就是在A.h中包含B.h,而不是在A.c中再包含。...我们看到《Google C++ 编程风格指南》倡导原则背后隐藏的目的是: (1) 为了减少隐藏依赖,源文件应该先包含其对应的头文件(本文称之为首选项)。...不过我觉得《Google C++ 编程风格指南》的顺序:C标准库、C++标准库、其它库的头文件、自己工程的头文件,在最前面漏了一项:操作系统级别的头文件

2.3K10

c语言中的system函数_c语言system的头文件

函数原型 包含头文件 “stdlib.h” 中 int system(const char * command) 函数功能 执行 dos(windows系统) 或 shell(Linux/Unix系统...system("shutdown -a");//取消关机命令 } else { goto flag; } return 0; } 附录 一些system()函数的参数及实现的功能 表格里的内容可以通过...参数 功能 说明 ASSOC 显示或修改文件扩展名关联 ATTRIB 显示或更改文件属性 BREAK 设置或清除扩展式 CTRL+C 检查 BCDEDIT 设置启动数据库中的属性以控制启动加载...CHKNTFS 显示或修改启动时间磁盘检查 CLS 清除屏幕 * CMD 打开另一个 Windows 命令解释程序窗口 * COLOR 设置默认控制台前景和背景颜色 * COMP 比较两个或两套文件的内容...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

2.4K20

如何编写自己的C语言头文件

一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的。只知道调用系统库 函数时,要使用#include语句将某些头文件包含进去。其实,头文件跟.C文件一样,是可以自己写的。...头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。...当使用#include语句将头文件引用时,相当于将头文件中所有内容,复制到#include处。...常根据它所在的头文件名来命名,例如,如果头文件的文件名叫做stc15w.h,那么可以这样使用: #ifndef _STC15W_H_ #define _STC15W_H_ //代码部分 #...使用引号“”时,首先搜索工程文件所在目录,然后再搜索编译器头文件所在目录;而使用尖括号时,刚好是相反的搜索顺序。 假设我们有两个文件名一样的头文件stc15w.h,但内容却是不一样的。

3.5K20
领券