【问题标题】:Macro is outlined with an error in visual studio but it still woks anyway. The error doesn't seem to make sense宏在视觉工作室中被概述了一个错误,但它仍然可以正常工作。错误似乎没有意义
【发布时间】:2021-04-11 19:05:08
【问题描述】:

我创建了一个宏来调用std::chrono::high_resolution_clock::now(),VS 一直说我每次调用它都会出错,但它仍然有效。代码如下:

#include <iostream>
#include <chrono>

using namespace std;

#define DIM 30
#define TEMPO_ATTUALE chrono::high_resolution_clock::now()

这是我尝试调用宏时弹出的错误:

class "std::chrono::steady_clock" has no member "now"

问题是,我没有使用 stable_clock,我使用的是high_resolution_clock

这里有什么问题?

【问题讨论】:

  • 我没有收到您描述的错误,也没有收到任何错误/警告,即使在警告级别 4 和将警告视为错误也是如此。但是,我的回答解释了为什么您会看到提到 steady_clock 而不是 high_resolution_clock
  • 所以这只是 Visual Studio 的一个本地错误,原因不明?
  • 视情况而定。您使用的是什么版本的 Visual Studio?您没有在问题中提及它,也没有用特定版本标记您的问题。
  • @Casey 这个问题实际上什么都不做就解决了,所以是的,这是一个本地随机 VS 错误。
  • 很遗憾,这意味着问题无法重现。

标签: c++ visual-studio macros


【解决方案1】:

std::chrono::high_resolution_clock 是为其他两个时钟之一定义的typedef 实现:steady_clocksystem_clock

这不是真正的类型。

MSVC 将high_resolution_clock 定义为using high_resolution_clock = steady_clock;

这就是错误将其报告为std::chrono::steady_clock 的原因。

因为它是实现定义的,最好只声明你想使用哪个时钟;在这种情况下,steady_clock

【讨论】:

    猜你喜欢
    • 2021-09-04
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多