Tag: 头文件

将所有包含放在一个头文件中是一个好主意吗?

C放入C头文件的最佳做法是什么? 将所有用于程序的包含放在一个头文件中的多个源文件中是否有用? 几乎每个文件(即stdio.h)中使用的包含怎么样?

@登录C变量声明

我找到了PIC微控制器的这个头文件,名称为pic1250.h,我无法理解其中使用的一些语法。 该文件的来源是: /* * Header file for the Microchip * PIC 12c508 chip * PIC 12c509 chip * Baseline Microcontrollers */ static volatile unsigned char RTCC @ 0x01; static volatile unsigned char TMR0 @ 0x01; static volatile unsigned char PCL @ 0x02; static volatile unsigned char STATUS @ 0x03; static unsigned char FSR @ 0x04; […]

头文件包含静态分析工具?

一位同事最近向我透露,我们的一个源文件在编译期间包含了超过3,400个标题。 我们有超过1,000个翻译单元可以在构建中进行编译,从而导致对标题的巨大性能损失,这些标题肯定不会全部使用。 是否有任何静态分析工具可以揭示这样一片森林中的树木,特别是让我们能够决定我们应该在哪些方面进行削减? UPDATE 在这里找到了一些关于包含头文件(以及优化其包含的包含保护类型)的成本的一些有趣信息,源于这个问题 。

头文件中的变量定义

我对C和编译过程的基本知识最近变得生疏。 我试图找出以下问题的答案,但我无法连接编译,链接和预处理阶段基础知识。 快速搜索谷歌也没有多大帮助。 所以,我决定来到最终的知识来源:) 我知道:不应该在.h文件中定义变量。 可以在那里宣布它们。 原因:因为头文件可能包含在多个位置,因此重新定义变量多次(链接器给出错误)。 可能的解决方法:在头文件中使用header-guard并在其中定义变量。 它真的是一个解决方案:不。因为标题保护是用于预处理阶段。 那就是告诉编译器这部分已经包含在内并且不再包含它。 但是我们的多重定义错误出现在链接器部分 – 在编译之后。 整件事让我对预处理和链接的工作方式感到困惑。 如果已经定义了头部保护符号,我认为预处理将不包括代码。 在那种情况下,不应该解决变量问题的多重定义吗? 这些预处理指令会在标题保护下重新定义编码过程,但链接器仍会获得符号的多个定义,会发生什么?

C中的头文件有什么意义?

可能重复: [C]每个源文件的标头。 在C ++中为什么有头文件和cpp文件? C ++ – 什么应该进入.h文件? C中存在头文件的唯一原因是开发人员可以快速查看哪些函数可用,以及它们可以采用哪些参数? 或者它与编译器有关? 为什么没有其他语言使用此方法? 它只是我,还是看起来有两套function定义只会导致更多的维护和更多的错误空间? 或者知道头文件只是每个C开发人员必须知道的东西?