我正在查看有关使用QueryPerformanceFrequency进行调度的一些代码。我无法理解这里发生了什么。为什么rvalue用括号括起来? LARGE_INTEGER是一个结构体,因此初始化需要{},但完全被这一行所困惑。 QueryPerformanceFrequency也返回一个bool。
// Initialize the resolution of the timer
LARGE_INTEGER Timer::m_freq = (QueryPerformanceFrequency(&Timer::m_freq), Timer::m_freq);
标头包含一个带有私有成员的Timer结构:
static LARGE_INTEGER m_freq;
答案 0 :(得分:1)
很糟糕。正如评论者所说的那样糟糕。
鉴于QueryPerformanceFrequency应该是一个廉价的调用,很少需要将它作为全局(静态)变量进行缓存。
改为做。
从类声明中的m_freq变量中删除static
声明。
在m_freq
班级的构造函数中初始化Timer
。
示例:
Timer::Timer()
{
BOOL result = QueryPerformanceFrequency(&m_freq);
if (result==FALSE)
{
// optional - set error condition. But it's not like
// the original code was handling the potential error either
}
}