我想在C++中增加LARGE_INTEGER
但我得到以下错误。如何增加LARGE_INTEGER
错误C2397:从“LONGLONG”到“DWORD”转换需要一个收缩转换
我不知道我做错了。其非常简单的问题,我试图重建项目,但错误不会消失。
std::atomic<LARGE_INTEGER> value; // this field is defined in header
这些行都是我试过的,都给出了同样的错误。
// inside a method in cpp
value = {get_some_large_integer().QuadPart + 1};
value = LARGE_INTEGER{get_some_large_integer().QuadPart + 1};
value = static_cast<LARGE_INTEGER>(LARGE_INTEGER{get_some_large_integer().QuadPart + 1});
是的,我必须使用'LARGE_INTEGER',因为我仅限于使用此数据类型的库窗口函数。是的,'value = {get_some_large_integer()};'也适用于我,但是'value = {get_some_large_integer()。QuadPart};'给出错误。看起来增量不是问题,但访问QuadPart是一个如何的问题。 @CodyGray –
@CodyGray我看到了,但它的怪异ctor不接受64位值。它的奇怪,如果它的64位值应该有! –
它正在从'li.QuadPart'中初始化'LARGE_INTEGER',这是问题所在。尝试不用'std :: atomic'。你会遇到同样的问题。没有办法直接从64位值构造'LARGE_INTEGER'(因为不幸的是,C++没有[指定初始化函数](https://stackoverflow.com/questions/31638182/initialize-union-using-largest -member-下MSVC编译器))。您需要使用两个32位的一半来构建它。我不知道这里有一个好的解决方案。也许别人会。 –