首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >头文件顺序

头文件顺序
EN

Stack Overflow用户
提问于 2011-01-26 02:43:11
回答 4查看 3.2K关注 0票数 3

可能重复:

C++ Header order

代码语言:javascript
复制
// Here is module This.cpp
#include <boost/regex.hpp>
#include <iostream>
#include <math.h>
#include "mystring_written_by_c.h"
#include "mystring_written_by_cpp.h"
#include <list>
#include <string>
#include <stdio.h>
#include "stdafx.h" // for precomp
#include <tchar.h>
#include "This.h"
#include <Windows.h>
#include <Winsock2.h>

它们现在是按字母排序的。

我正在寻找订购它们的最佳方法。(有好的公式吗?)

您将如何订购这些头文件?为什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-26 02:55:22

标题应该尽可能地写到,1)独立于可能已经包含的内容,2)不为后面包含的标头引入问题(例如公共标识符的宏)。当这两种情况都是真的时,您所包含的顺序并不重要。如果这些都不是真的,您应该在您自己的头中修复它,或者在必要时处理它。

因此,选择是任意性的,但做出选择仍然是很重要的!“这个计划什么都不是,但计划就是一切。”一致性使代码更具可读性。

一个相对常见的顺序是标准库、系统(如OS)、外部库以及与当前文件相同的项目的头--除了一个实现文件的一个例外,包括它的“对应”头(如果有),首先,在任何包含或其他代码之前。在每一组中,我按照习惯按字母顺序排序,因为同样,它完全是任意的,但一些容易使用的顺序可以让我快速阅读和更新列表。

适用于您的名单:

代码语言:javascript
复制
// first only because this is required in your precompiled header setup
#include "stdafx.h"

// it's too bad this can't really be first
// I'm guessing "This" refers to the corresponding header
#include "This.h"

// C stdlib then C++ stdlib is what I usually do,
// whether the C headers are spelled XXX.h or cXXX.
#include <math.h>
#include <stdio.h>
#include <iostream>
#include <list>
#include <string>

// someone mentioned winsock2 needs to be before windows
#include <Winsock2.h>

#include <tchar.h>
#include <Windows.h>

#include <boost/regex.hpp>

#include "mystring_written_by_c.h"
#include "mystring_written_by_cpp.h"

上面的分界线是故意分成几组的。我会留下一个关于为什么winsock2被赋予自己的组的评论,但是其余的评论通常不会在那里。

票数 5
EN

Stack Overflow用户

发布于 2011-01-26 02:47:20

这在很大程度上取决于如何包含。如果没有任何一个依赖于另一个,您可以相对自由地使用自己的方案(一般来说,大多数重要的头文件将被隐式地包含在其他人要求的情况下)。

但是,请注意,WinSock2.h必须包含在Windows.h之前,否则很有可能在编译时得到链接器错误。

祝好运!

丹尼斯M.

票数 3
EN

Stack Overflow用户

发布于 2011-01-26 02:46:33

您放置头文件的顺序并不重要。这主要是一个选择的问题。很多人把系统头(<>之间的头)放在第一位,把私有头放在后面,但这取决于你。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4800991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档