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

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

如非特殊说明,文中“源文件”指 * .c文件,“头文件”指 *.h文件,“引用”指包含头文件。 一、头文件作用 C语言里,每个源文件是一个模块,头文件为使用该模块用户提供接口。..."C"修饰变量和函数将按照C语言方式编译和连接,否则编译器将无法找到C函数定义,从而导致链接失败。...「【注2】#pragma once可移植性」 #ifndef由C/C++语言标准支持,不受编译器任何限制;而#pragma once仅由编译器提供保证,存在可移植性等问题。...「【注3】extern "C"」 C++语言在编译时为实现函数重载,会结合函数名、参数数目及类型信息而生成一个中间函数名。...C语言中不支持extern "C"声明,在.c文件中包含extern "C"时会出现编译语法错误。 当然编译器也可以为其他语言提供链接说明。

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

C语言---头文件

编程规范规定,头文件里面不能include其他文件,只能在源文件中include使用到头文件,防止头文件重复包含。对于我这种平时没这个规范习惯的人来说,就有疑问了。...假如我有头文件a.h和b.h,a.h中定义了一个结构体数据类型,而我在b.h中是要使用这个数据类型,一般情况我会直接在b.h这个头文件包含a.h。...这样就可以正常使用了,如果头文件包含头文件的话,只在源文件中包含,这样能使用吗?会不会报错? 例如:源文件mian.c包含头文件a.h和b.h,头文件b.h中需要引用a.h中数据结构类型。...SRU_S类型并没有在b.h中定义,也没有包含有定义此结构体文件。然后我们在main.c中使用b.h中结构。.../a.out sb.b: 1 sb.sa.a: 99 如果我们main.c头文件包含a.h和b.h位置调换一下,先包含b.h再包含a.h。

4K20

c语言_头文件_stdlib

简介 stdlib 头文件即standard library标准库头文件 stdlib 头文件包含CC++语言最常用系统函数 该文件包含C语言标准库函数定义 stdlib.h里面定义了五种类型...具体内容你自己可以打开编译器include目录里面的stdlib.h头文件看看。...pop)#endif /** _MSC_VER */ 127 #endif /** _INC_STDLIB *//** 88bf0570-3001-4e78-a5f2-be5765546192 */ 包含函数...输入样式:C语言模式:#include C++样式:#include 1函数名称:calloc 函数原型: void * calloc(unsigned n,...); 函数功能: 将p所指出已分配内存区大小改为size,size可以比原来分配空间大或小 函数返回: 返回指向该内存区指针.NULL-分配失败 5函数名称: rand 函数原型: int rand

2.9K30

头文件包含问题

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

1.8K10

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

大家好,又见面了,我是你们朋友全栈君。...函数原型 包含头文件 “stdlib.h” 中 int system(const char * command) 函数功能 执行 dos(windows系统) 或 shell(Linux/Unix系统...参数 功能 说明 ASSOC 显示或修改文件扩展名关联 ATTRIB 显示或更改文件属性 BREAK 设置或清除扩展式 CTRL+C 检查 BCDEDIT 设置启动数据库中属性以控制启动加载...CACLS 显示或修改文件访问控制列表(ACL) CALL 从另一个批处理程序调用这一个 CD 显示当前目录名称或将其更改 CHCP 显示或设置活动代码页数 CHDIR 显示当前目录名称或将其更改...提供 Windows 命令帮助信息 ICACLS 显示、修改、备份或还原文件和目录 ACL IF 在批处理程序中执行有条件处理操作 LABEL 创建、更改或删除磁盘卷标 MD 创建一个目录

2.4K20

c++中cstring头文件_C语言头文件来源

大家好,又见面了,我是你们朋友全栈 cstring头文件函数 类别 函数名 简介 使用 赋值 memset 给数组赋初值 memset(arr,‘0’,sizeof(arr)) 比较 strcmp...比较两个字符数组 strcmp(arr1,arr2) strncmp 比较两个字符数组前n个元素 strncmp(arr1,arr2,n) 复制 strcpy 将字符串复制到 strcpy(arr1...,arr2) strncpy 将字符串指向前n个元素复制 strncpy(arr1,arr2,n) 连接 strcat 将指定字符串追加到字符串后面 strcat(arr1,arr2) strncat...将指定字符串指定长度字符串追加到字符串后面 strncat(arr1,arr2,n) 查找 strchr 查找字符串第一次出现字符位置 strchr(arr,ch) strrchr 查找字符串最后一次出现字符位置...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.6K10

C语言头文件使用总结

在平时工作中看到前人写一些C头文件,很有感触。自己在写时候也遇到了很多问题,比如重复引用导致宏或者常量重复定义,不知道该使用双引号还是使用尖括号引用等问题,决定先总结一下。做个笔记,随时复习。...o( ̄▽ ̄)ブ C语言头文件 C语言头文件一般包含了函数声明,宏定义,常量等代码。我们在使用#include引用头文件。可以被多个c文件引用,避免了重复代码,减少了错误。让代码更加规范。...A simple practice in CC++ 程序中,建议把所有的常量、宏、系统全局变量和函数原型写在头文件中,在需要时候随时引用这些头文件。...但是这样并不标准,标准规定,包含标准头文件或系统头文件时应使用尖括号,包含自定义头文件时可使用双引号。...公共头文件 在程序代码中,经常很多c文件会引用一些相同头文件,这个时候,我们就可以定义一个包含这些相同头文件头文件common.h。

1.4K20

C语言头文件j解析

一、头文件作用 C语言里,每个源文件是一个模块,头文件为使用该模块用户提供接口。接口指一个功能模块暴露给其他模块用以访问具体功能方法。 使用源文件实现模块功能,使用头文件暴露单元接口。..."C"修饰变量和函数将按照C语言方式编译和连接,否则编译器将无法找到C函数定义,从而导致链接失败。...「【注2】#pragma once可移植性」 #ifndef由C/C++语言标准支持,不受编译器任何限制;而#pragma once仅由编译器提供保证,存在可移植性等问题。...「【注3】extern "C"」 C++语言在编译时为实现函数重载,会结合函数名、参数数目及类型信息而生成一个中间函数名。...C语言中不支持extern "C"声明,在.c文件中包含extern "C"时会出现编译语法错误。 当然编译器也可以为其他语言提供链接说明。

1.9K88

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

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

2.3K10

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

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

3.5K20

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

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

1.3K00

C语言头文件防卫式声明

C语言一般提供三种预处理功能:宏处理、文件包含、条件编译。头文件防卫式申明中会用到条件编译中 #ifndef、#define、#endif 用法。所以,首先价绍下条件编译。...main() {    cout<<g_head1<<endl;    //1    cout<<g_head2<<endl;    //2    return 0; } 随着项目增大或者其他需求,可能出现头文件包含...,例如头文件 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 被定义两次。...更多案例可以go公众号:C语言入门到精通

1.4K2519

为什么C语言会有头文件

前段时间一个刚转到C语言同事问我,为什么C会多一个头文件,而不是像Java和Python那样所有的代码都在源文件中。...我当时回答C是静态语言很多东西都是需要事先定义,所以按照惯例我们是将所有的定义都放在头文件。事后我再仔细想想,这个答案并不不能很好说明这个问题。...其实这个认识是错误C语言并没有规定include只能包含头文件,include本质是一个预处理指令它主要工作是将它后面的相关文件整个拷贝并替换这个include语句,比如下面一个例子 //add.cpp...很自然就想到专门编写一个文件来包含所有的定义,这样要使用对应函数或者变量时候直接包含这个文件就可以了,这个就是我们所说头文件了。...C语言编译过程 在上面我基本上回答了为什么需要一个头文件,但是本质问题还是没有解决,为什么像Python这类动态语言也有对应模块、多文件,但是它不需要像C那样要先声明才能使用?

2.1K50
领券