c - _headerfile_h 这个名字是什么意思
问题描述
我一直在阅读 Zed Shaw 的“Learn C The Hard Way”。在第 20 章中,作者创建了一个头文件 egheaderfile.h
并包含
#ifndef _headerfile_h
. 我理解#ifndef
指令但不理解_headerfile_h
。请解释这一点_headerfile_h
或提及任何资源来寻找它。
#ifndef _headerfile_h
#define _headerfile_h
…other material…
#endif /* _headerfile_h */
解决方案
它只是一个仅由该标头使用的唯一名称,以防止标头包含两次时出现问题。
请注意,通常不应创建以下划线开头的函数、变量、标记或宏名称。C11 §7.1.3 保留标识符的一部分说:
- 以下划线和大写字母或另一个下划线开头的所有标识符始终保留用于任何用途。
- 所有以下划线开头的标识符始终保留用作普通和标记名称空间中具有文件范围的标识符。
也可以看看:
- 双下划线 (
__const
) 在 C 中是什么意思? - 如何使用
extern
在源文件之间共享变量? - 我应该
#include
在标题中使用吗? - 为什么编译器不自动生成标头保护?
- 什么是记录 C 中“”文件使用模式的良好参考
.h
? - 何时在 C 中使用包含警卫
可能还有其他一些人。其中一些问题与其他资源有进一步的链接——SO 问题和外部链接。
推荐阅读
- javascript - Javascript 检查/验证三个字段的总和为 1
- c# - 通过使用 Visual Studio 生成代码来使用 WCF - ProtoBuf 客户端
- kotlin - 是否可以创建在一种情况下返回对象而在另一种情况下不返回任何内容的函数?
- google-bigquery - 将纬度和经度数据链接到 Big Query 中的邮政编码
- oracle - ODI KM 选项 - 调用项目变量
- javascript - 使用 Javascript 集成 Google Analytics
- python-3.x - 如何在python3中的lambda中放置条件
- r - 尝试使用聚合对列中的值子集运行线性模型
- javascript - 获取请求和状态更改后如何重新渲染组件?
- jquery - 如何检测用户何时放大 Web 应用程序