【发布时间】:2021-03-13 22:34:15
【问题描述】:
在我的课程中,他们使用 Code::Blocks 自动生成头文件。但是,我认为没有必要为此专门下载 Code::Blocks,因此我正在寻找一种方法来制作自己的头文件。
因此,我开始在网上搜索以了解具体如何执行此操作。 我检查了How to create my own header file in c++? [closed] 和cplusplus.com
但是,前者使用#ifndef YOUR_NAME_INCLUDE 和#define YOUR_NAME_INCLUDE,而后者使用#ifndef __X_H_INCLUDED__ 和#define __X_H_INCLUDED__,#ifndef 和#define 周围有两个下划线。我应该如何格式化我的标题保护?真的很重要吗?
例如,如果我有一个文件foo.h,它看起来像这样:
#ifndef ???
#define ???
int sum(int a, int b) {
return a + b;
}
#endif
我应该输入SUM_INCLUDED、FOO_INCLUDED、FOO_H 而不是??? 还是其他什么?
其次,制作头文件真的像在末尾添加.h 或.hpp 一样简单吗?
【问题讨论】:
-
这是一个很好的问题,但我不确定它是否适合 StackOverflow 模型。无论如何,是的,头文件只是另一个文件中
#included 的任何文件,因此它可能是.h、.hpp、.hxx、.h++、.hh、@.helloworld或任何你喜欢的。我个人使用.hpp(我不喜欢.h,因为.hpp向我的编辑器提示该文件是用于C++ 而不是C)。然后,对于标题保护(#ifndef+#define部分),这就是您想做的任何事情。我个人会推荐FOO_H或FOO_INCLUDED。 -
你在这里写什么并不重要,只要每个标题都有一个唯一的字符串。虽然标准说包含
__的名称是保留的,所以你不应该使用它。您还缺少文件末尾的#endif。 -
天哪,我一整天都看到的第一个简单的英语解释-我是五个答案!谢谢@贾斯汀
-
@HolyBlackCat 哎呀。让我解决这个问题。
-
除了上面讨论的“标题保护”之外,“我如何编写标题?”方法是您通常编写代码,直到您的源文件变得大到可以舒适地滚动浏览。然后您寻找类似/相关的函数以移动到单独的源文件以减小当前文件的大小。要在当前文件中包含您移回的函数,您需要创建一个头文件,该头文件通常包含每个移动函数的函数原型,以及您需要公开的任何常量或结构。将该信息包装在 header-guards 中,您就有了移动函数的标题。
标签: c++