我正在用C写一款游戏,用ncurses。我将球、球员和AI对手的函数定义分别放入ball.c、player.c和ai.c。每个文件都包含另一个文件pong.h,它包含函数原型、结构定义和全局变量。我的主要功能是在pong.c,它提供游戏循环和处理按键。
我的项目还包括许多库:ncurses.h、stdlib.h和time.h。我应该把这些图书馆放在哪里?目前,它们包括在pong.h中,如下所示:
#ifndef _PONG_H
#define _PONG_H
#include <ncurses.h>
#include <stdlib.h>
#include <time.h>
/* everything else */
#endif但是,只有某些文件使用stdlib.h/time.h中的函数。这使我相信,在所使用的文件中只包含一个使用库可能更有意义。另一方面,包括一个地方的所有库都是比较简单的。
我想知道是否有一种更传统或更有效的方法来做到这一点。
发布于 2021-12-23 19:30:44
没有固定的规则,相反,你应该平衡方便和卫生。您已经意识到元包含对于其他.c文件来说更方便,但是我将强调一些关于头文件的更模糊的问题:
ncurses.h)放入公共头文件可能会使将头文件包含在其他项目中变得更加困难。windows.h可能是最臭名昭著的罪魁祸首,对于大型头文件或大型头文件集,风险可能难以量化。发布于 2021-12-23 19:29:52
最好是,您应该在实际使用它们的文件中包括头,即使它可能有些多余。这样,如果稍后将包含移除到您定义的标头,则如果该文件碰巧使用stdio.h函数,但未将其本身包括在内,则可以避免编译问题。
看一眼文件使用的前几行也会更清楚。
https://stackoverflow.com/questions/70466539
复制相似问题