【问题标题】:Query.h in Windows 10.0.16299.0 prints syntax errors?Windows 10.0.16299.0 中的 Query.h 打印语法错误?
【发布时间】:2018-08-24 17:12:15
【问题描述】:

由于某种原因更新到最新版本的 Windows 10 构建后,Query.h 文件无法使用我的 C++ 代码编译!我们将 Query 用于我们的 FPS 时间步长计数器,这对于任何类型的游戏引擎都至关重要,但是由于从版本 10.0.15063.0 传输到 10.0.16299.0,我们在尝试构建 vs 项目时收到以下错误消息:

1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\um\query.h(262): error C2059: syntax error: '||'

1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\um\query.h(262): 错误 C2238: ';'之前的意外令牌

还有其他人遇到同样的问题吗?使用 Query.h 是我们的基础,因为它通过高分辨率计数器保持我们的帧计数以恒定的速度滴答作响!

我希望有人可以在这里为我指出正确的方向。

谢谢。

威廉。

【问题讨论】:

    标签: c++ windows visual-studio syntax syntax-error


    【解决方案1】:

    文件本身包含一个解释:

    // NOTE: When using the /permissive- compiler switch the below structure
    // will not compile due to the case(RTOr) member 'or'. Please compile without
    // the /permissive- switch
    
    struct tagRESTRICTION
        {
        ULONG rt;
        ULONG weight;
        /* [switch_is][switch_type] */ union _URes
            {
            /* [case()] */ NODERESTRICTION ar;
            /* [case()] */ NODERESTRICTION or;       // Line 262
            /* [case()] */ NODERESTRICTION pxr;
            /* [case()] */ VECTORRESTRICTION vr;
            /* [case()] */ NOTRESTRICTION nr;
            /* [case()] */ CONTENTRESTRICTION cr;
            /* [case()] */ NATLANGUAGERESTRICTION nlr;
            /* [case()] */ PROPERTYRESTRICTION pr;
            /* [default] */  /* Empty union arm */ 
            }   res;
        } ;
    

    【讨论】:

    • 是的,但在其他项目中我完全没有语法错误。好奇怪!
    【解决方案2】:

    已修复我刚刚删除了第 262 行:

    /* [case()] */ NODERESTRICTION 或;

    最新版本现在将“或”视为变量。感谢您让我们了解微软! :D

    【讨论】:

    • 我相信 oroperator || 的替代名称,它已成为最近标准中的关键字。
    • 那么它是不是很新?
    • 它并不是什么新东西,但它大部分时间都作为一个宏定义在一些很少包含的标题中。
    • 我希望微软在未来的更新中解决这个冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2011-11-26
    相关资源
    最近更新 更多