首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个文件应该在我的c++项目中包含库?

哪个文件应该在我的c++项目中包含库?
EN

Stack Overflow用户
提问于 2021-12-23 19:17:34
回答 2查看 66关注 0票数 2

我正在用C写一款游戏,用ncurses。我将球、球员和AI对手的函数定义分别放入ball.cplayer.cai.c。每个文件都包含另一个文件pong.h,它包含函数原型、结构定义和全局变量。我的主要功能是在pong.c,它提供游戏循环和处理按键。

我的项目还包括许多库:ncurses.hstdlib.htime.h。我应该把这些图书馆放在哪里?目前,它们包括在pong.h中,如下所示:

代码语言:javascript
复制
#ifndef _PONG_H
#define _PONG_H

#include    <ncurses.h>
#include    <stdlib.h>
#include    <time.h>

/* everything else */

#endif

但是,只有某些文件使用stdlib.h/time.h中的函数。这使我相信,在所使用的文件中只包含一个使用库可能更有意义。另一方面,包括一个地方的所有库都是比较简单的。

我想知道是否有一种更传统或更有效的方法来做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-23 19:30:44

没有固定的规则,相反,你应该平衡方便和卫生。您已经意识到元包含对于其他.c文件来说更方便,但是我将强调一些关于头文件的更模糊的问题:

  • 将依赖项(例如ncurses.h)放入公共头文件可能会使将头文件包含在其他项目中变得更加困难。
  • 头文件的传递成本将主导编译时间,因此减少不必要的包含将使您的项目能够更快地编译。程序已经被开发用来管理包含。
  • 头文件可以破坏性地相互干扰,例如,由于宏更改了随后包含的头文件的语义。windows.h可能是最臭名昭著的罪魁祸首,对于大型头文件或大型头文件集,风险可能难以量化。
  • 随着时间的推移,可以清楚地看到哪些头文件实际上应该打包,例如,当方便的好处很高,风险和成本很低的时候。在一个小项目上,也许从一开始就很明显。
票数 1
EN

Stack Overflow用户

发布于 2021-12-23 19:29:52

最好是,您应该在实际使用它们的文件中包括头,即使它可能有些多余。这样,如果稍后将包含移除到您定义的标头,则如果该文件碰巧使用stdio.h函数,但未将其本身包括在内,则可以避免编译问题。

看一眼文件使用的前几行也会更清楚。

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

https://stackoverflow.com/questions/70466539

复制
相关文章

相似问题

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