请解释这个c ++宏

时间:2015-07-17 18:10:40

标签: c++ macros glfw oculus

我正在尝试调整特定的源代码示例,但很难理解它如何控制主循环:

testlib.so

我知道stackoverflow不想要链接,但在这种特殊情况下它可能是必要的,以便获得有关所用命令的更多信息: https://github.com/OculusRiftInAction/OculusRiftInAction/blob/master/examples/cpp/common/ovr/OvrUtils.h

3 个答案:

答案 0 :(得分:1)

这太可怕了,我不会用它,但它很清楚。

它:(1)尝试初始化并返回-1,如果它不能,然后(2)调用AppClass.run()并返回它从中恢复的结果(3)关闭事物。加上一点点异常捕获。

答案 1 :(得分:0)

通过查看其实现来检查宏定义是不够的,因为宏的“复制 - 粘贴”性质,它不足以理解它在大型代码库中的使用方式。

我的建议是获取预处理文件并检查宏的使用位置和方式。

要获取预处理文件,请参阅以下讨论。

How do I see a C/C++ source file after preprocessing in Visual Studio?

答案 2 :(得分:-1)

代码是Oculus Rift的一组示例应用程序的一部分,旨在使每个示例应用程序基本上可以使用run方法定义一个类,然后包含宏,以便无论平台如何都可以执行该类,并且在程序的生命周期内初始化Oculus SDK。

即。

class DemonstrateTechnique {
  int run() {
    ...  do stuff ...
  }
}

RUN_OVR_APP(DemonstrateTechnique)

Here是正在使用的宏的实际示例。

宏并不是真正意义上的典范。它只是一个方便的宏,所以作者(我)不必写一堆样板主要函数来实例化一个类并初始化一个SDK。

宏内部的init / shutdown方法的目的是确保初始化的Oculus SDK具有比应用程序本身更大的范围。这对0.6之前的SDK版本来说实际上是至关重要的,因为在旧版本中如果在之后初始化SDK ,则创建了OpenGL上下文,则无法使Direct HMD模式起作用。