- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
*虽然我的问题与 glfw 有关,但 C++ 知识比我多的人可能会回答这个问题。
我很难理解以下代码行的行为:
static double previousSeconds = glfwGetTime();
假设这是一个无限的 while 循环。
如果我在 while 循环中打印出 previousSeconds,该值不会改变。例如,我将永远得到 0.420998。 glfwGetTime() 返回 glfw 初始化后的秒数。所以第一次通过 while 看它应该是 0.4290998 而第二次它应该是......比如 0.44xxxxx。当我删除“静态”时,这种行为是不同的,然后它会按照我的预期进行计数。我不明白为什么这是静态的会导致值保持不变的行为。据我所知,静态变量在调用之间保留它们的值,但我在 while 循环的每次迭代中重新分配它的值。
有人可以帮我解决这个问题吗?
最佳答案
静态变量只初始化一次,如果编译器运行静态变量的另一个初始化,它将检查它是否已经存在,如果存在,则忽略它。
因此,第一次通过循环初始化静态变量,所有其他时间它被忽略,因为它已经被初始化。
我认为这部分C standard N3797包括这个:
Constant initialization (3.6.2) of a block-scope entity with static storage duration, if applicable, is performed before its block is first entered.
...
Otherwise such a variable is initialized the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization.
非静态变量遵循以下规则:
Variables with automatic storage duration (3.7.3) are initialized each time their declaration-statement is executed.
这解释了为什么非静态变量会改变,而静态变量不会。
关于c++ - glfwGetTime() 和静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20755236/
*虽然我的问题与 glfw 有关,但 C++ 知识比我多的人可能会回答这个问题。 我很难理解以下代码行的行为: static double previousSeconds = glfwGetTime(
我尝试使用 ffmpeg + opengl 来控制视频的播放速度。但是我有问题。 我的视频以 25 fps 编码,播放速度非常快。我在我的代码中添加了这个。 tiempo = glfwGetTime(
在使用 glfwGetTime() 在我的 C++ 项目中进行一些研究和调试后,我在为我的项目制作游戏循环时遇到了问题。就时间而言,我实际上只在 Java 中使用纳秒,在 GLFW 网站上,它声明该函
我是一名优秀的程序员,十分优秀!