C-toxcore: 不要在 .h 文件中包含操作系统特定的头文件

创建于 2016-09-11  ·  5评论  ·  资料来源: TokTok/c-toxcore

目前, network.h包含大量特定于平台的标头(如u.hwindows.hunistd.h )。 我们应该将这些限制在一个文件(或几个文件)中。

我建议我们在用于网络的操作系统设施上创建一个薄抽象,并为单调时钟创建另一个抽象。 然后我们可以为每个平台类型创建一个文件(例如${module}_win32.c_unix.c_osx.c_posix.c ,...)并根据预处理器有条件地编译它们符号,就像我们已经做的一样。 缺点是它的声明开销要多一些,因为目前那些#ifdef是在需要为每个平台重新定义的函数内部。 优点是代码本身没有或很少有#ifdef s,并且平台特定代码在一组小文件中,而不是(就像现在)在 1100 行文件中混合平台抽象与应用程序代码。

P1 cleanup good first issue

最有用的评论

我们做一个“系统”接口,可以由“windows系统”和“posix系统”和“测试系统”来实现怎么样? 测试系统可用于单元测试并模拟系统,而无需实际进行系统调用。

所有5条评论

听起来不错

我们做一个“系统”接口,可以由“windows系统”和“posix系统”和“测试系统”来实现怎么样? 测试系统可用于单元测试并模拟系统,而无需实际进行系统调用。

我不同意实施建议。 我更愿意在一个文件中看到所有函数{network,time,...}.c#ifdef用于包装需要为每个平台编写不同的函数。

这种方法相对于单独文件的好处是,我们可以将所有特定于平台的代码强制为静态函数,并为更高级别的 toxcore 公开单个 API。 任何平台实施细节都可以从单个文件中轻松查看。 平台特性需要在单个文件中进行抽象和处理,而不是跨多个文件进行处理。 它还将使 cmakelists.txt 文件更易于维护(它已经开始远离我们了。)然后使用我们当前的审查系统进行审查。

没有完全固定

@GrayHatter同意。 让我们有一个实现操作系统细节的文件。

我现在取消分配

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

tox-user picture tox-user  ·  4评论

iphydf picture iphydf  ·  9评论

hkarel picture hkarel  ·  8评论

DataMaster-2501 picture DataMaster-2501  ·  6评论

zoff99 picture zoff99  ·  4评论