注意include .h 文件的使用

场景

(看到项目中有如下使用方式,觉得会存在弊端,占用不必要的内存,虽然结果没有问题。)

多个变量定义在一个fid.h文件,

多个cpp文件(比如100个)同时#include "fid.h"

弊端

任意一变量会在cpp文件中展开,如果fid.h被include了100次,任一fid.h中的变量将在可执行文件中定义100次,
之所以链接不会出错重复定义,是因为变量被const修饰后,变为内链接。

</pre>fid.h<pre name="code" class="cpp">#ifndef _FID_H_
#define _FID_H_

//----------------------  Account  -----------------------------
const int FID_ACCOUNT_BASE                    = 10000;
const int FID_ACCOUNT_ID                      = FID_ACCOUNT_BASE + 0;     
const int FID_ACCOUNT_NAME                    = FID_ACCOUNT_BASE + 1;     
const int FID_ACCOUNT_PASSWORD                = FID_ACCOUNT_BASE + 2;     
const int FID_ACCOUNT_COMPANY_ID              = FID_ACCOUNT_BASE + 3;     
const int FID_ACCOUNT_TOKEN                   = FID_ACCOUNT_BASE + 4;     
const int FID_ACCOUNT_DEPARTMENT              = FID_ACCOUNT_BASE + 5;     
const int FID_ACCOUNT_COMPANY_NAME            = FID_ACCOUNT_BASE + 6;     
const int FID_ACCOUNT_ROLE                    = FID_ACCOUNT_BASE + 7;     
const int FID_ACCOUNT_PERMISSION              = FID_ACCOUNT_BASE + 8;     
const int FID_ACCOUNT_CODE					   = FID_ACCOUNT_BASE + 9;     
const int FID_ACCOUNT_TELEPHONE               = FID_ACCOUNT_BASE + 10;    
const int FID_ACCOUNT_PHONE		           = FID_ACCOUNT_BASE + 11;    
const int FID_ACCOUNT_EMAIL				   = FID_ACCOUNT_BASE + 12;    
const int FID_ACCOUNT_RM		               = FID_ACCOUNT_BASE + 13;    
const int FID_ACCOUNT_MSN		               = FID_ACCOUNT_BASE + 14;    
const int FID_ACCOUNT_QQ		               = FID_ACCOUNT_BASE + 15;    
const int FID_ACCOUNT_ADDRESS	               = FID_ACCOUNT_BASE + 16;    
const int FID_ACCOUNT_PASSWORD_ORG            = FID_ACCOUNT_BASE + 17;    
........
#endif // _FID_H_


### 关于 `include.h` 文件的用途和作用 在 C 和 C++ 编程中,头文件(Header Files)用于声明函数原型、宏定义以及数据结构等内容。这些头文件通过预处理指令 `#include` 被引入到源代码中。 #### 头文件的作用 头文件的主要目的是提供接口定义,使得程序的不同部分能够共享相同的声明和定义。例如,在引用的内容中提到的 `file2.c` 使用了标准输入输出库 `<stdio.h>`[^1],该头文件包含了与 I/O 操作相关的函数声明,如 `printf()` 的原型。 对于特定的头文件 `include.h`,需要注意的是,这并不是一个标准化的名字,也不是常见的系统级头文件名称。通常情况下,开发者可能会创建自定义的头文件并命名为 `include.h` 来集中管理项目的公共定义或配置项。如果是在 Linux 或其他类 Unix 系统上开发,则更可能涉及的标准头文件包括但不限于: - **`<sys/types.h>`**: 提供基本的数据类型定义,比如 `size_t`, `ssize_t`, `off_t` 等[^2]。 如果没有找到 `/usr/include/sys/types.h` 这样的路径,可能是由于系统的安装方式或者版本差异造成的。但实际上编译器仍然可以正常工作是因为它会自动查找正确的目录位置。 #### 自定义头文件的例子 假设有一个项目需要用到一些全局常量和工具方法,那么可以创建自己的 `include.h` 如下所示: ```c // include.h #ifndef INCLUDE_H #define INCLUDE_H #define MAX_VALUE 100 void utilityFunction(int value); #endif /* INCLUDE_H */ ``` 对应的实现文件如下: ```c // include.c #include "include.h" #include <stdio.h> void utilityFunction(int value){ if(value > MAX_VALUE){ printf("Value exceeds maximum allowed.\n"); } } ``` 这样做的好处是可以让多个 `.c` 文件共用同样的功能而无需重复编写代码。 ### 总结 虽然存在名为 `include.h` 的情况,但它并非任何官方规定的标准库的一部分;相反,它是程序员为了方便管理和重用某些逻辑片段所建立的一种机制而已。至于具体某个环境里找不到某几个预期中的系统头文件的现象,则往往取决于实际使用的操作系统及其设置等因素影响所致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值