0

我开始学习 openGL,也第一次开始将我的项目拆分为多个源文件。因此,我仍然有点困惑,有时我觉得我的变量分散在各处,尤其是因为 openGL 需要大量使用全局变量。目前我收到了大约 15 个文件。

我的主要问题是某些变量例如由某些模块共享,而其他一些变量仅由其中一些模块和其他一些模块共享。如果我将所有这些变量放在一个 common.h 文件中,是否会出现任何问题(性能方面),因为并非所有变量都将被所有模块使用?

使用上述方法我也有一个问题,如果我使用其他头文件中定义的类型,我也必须包含这些。我也可以使用 '#if (defined' 宏,但这似乎不是最合适的方法。

4

1 回答 1

0

包括extern未使用变量的声明不应导致性能问题(绝对不会在运行时,但它会在编译时引入难以察觉的小开销)。

但是,它会导致您的代码难以维护。最佳实践是根据用途或目的将全局范围的变量和函数组织到标头中。概念上相关的东西放在同一个标​​题中,不相关的东西放在不同的标题中。这样可以更轻松地包含您需要的功能,而不会引入大量您不需要的垃圾。

我不认为您需要包含标头才能引入数据类型定义是一个问题。这只是 C 语言工作原理的一部分。通过确保所有标题都是自给自足的,您可以让自己更轻松。也就是说,如果标头使用特定数据类型,则该标头应包括定义该类型的标头。这样,您的 .c 文件就不必担心分析标头并确定需要包含哪些其他标头。不自给自足的标头也可能导致代码构建不同(或根本不构建)的问题,具体取决于包含标头的顺序。

于 2012-04-09T23:34:53.907 回答