我想在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位的一半來構建它。我不知道這裏有一個好的解決方案。也許別人會。 –