【问题标题】:C++ - Error C2568 - Expression must have an integral or unscoped enum typeC++ - 错误 C2568 - 表达式必须具有整数或无范围枚举类型
【发布时间】:2017-01-27 23:52:20
【问题描述】:

这是导致问题的低效、平台相关代码。

#define MGE_WARN(X) SetConsoleTextAttribute(hOut, 10); std::cout << "MONSTER (WARNING): ", X << std::endl; SetConsoleTextAttribute(hOut, 1);

不要问这是为什么或在做什么 - 它旨在将黄色文本打印到控制台并且确实如此,但我现在正试图将其放入定义中。

【问题讨论】:

    标签: c++ enums


    【解决方案1】:

    替换

    std::cout << "MONSTER (WARNING): ", X << std::endl; 
    

    std::cout << "MONSTER (WARNING): " << X << std::endl; 
    //                               ^^^^^^
    

    注意从,&lt;&lt; 的变化。

    【讨论】:

    • 是的,原始代码可能不正确,但这如何解释错误消息?最后,我查看了逗号运算符还活着。
    • 哦,等等,我现在明白了 - 这是第二个产生错误的&lt;&lt;
    • 谢谢,我不敢相信我没有看到。但是 - 我现在遇到另一个错误。严重性代码 描述 项目文件行抑制状态“错误 LNK1169 发现一个或多个多重定义符号 Monster Game Engine Core”以及“LNK2005 "void * hOut" (?hOut@@3PAXA) 已在 EngineMain.obj Monster Game Engine Core 中定义'
    • 除非 hOut 是一个全局变量,您使用宏的每个地方都可以访问,否则您将遇到问题。
    • @mattiemonster 1)这个问题与您的原始问题(已回答)完全无关。 2)您定义了一些函数/全局变量/等。多次。如果没有更多细节,无法确定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多