格式指定类型';无符号长';但参数的类型为';无符号整数'; 我正在编写一些C++代码,编译时会收到一个警告。我知道这不会真正影响最终结果,但我希望代码尽可能干净,警告是: src/main.cpp:1908:136: warning: format specifies type 'unsigned long long' but the argument has type 'unsigned int' [-Wformat] ...: Rejected by stake modifier checkpoint height=%d, modifier=0x%016"PRIx64, pindexNew->nHeight, pindexNew->nStakeModifierChecksum); ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

格式指定类型';无符号长';但参数的类型为';无符号整数'; 我正在编写一些C++代码,编译时会收到一个警告。我知道这不会真正影响最终结果,但我希望代码尽可能干净,警告是: src/main.cpp:1908:136: warning: format specifies type 'unsigned long long' but the argument has type 'unsigned int' [-Wformat] ...: Rejected by stake modifier checkpoint height=%d, modifier=0x%016"PRIx64, pindexNew->nHeight, pindexNew->nStakeModifierChecksum); ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,c++,C++,有关守则是: uint64_t nStakeModifier = 0; bool fGeneratedStakeModifier = false; if (!ComputeNextStakeModifier(pindexNew->pprev, nStakeModifier, fGeneratedStakeModifier)) return error("AddToBlockIndex() : ComputeNextStakeModifier() fa

有关守则是:

    uint64_t nStakeModifier = 0;
    bool fGeneratedStakeModifier = false;
    if (!ComputeNextStakeModifier(pindexNew->pprev, nStakeModifier, fGeneratedStakeModifier))
        return error("AddToBlockIndex() : ComputeNextStakeModifier() failed");
    pindexNew->SetStakeModifier(nStakeModifier, fGeneratedStakeModifier);
    pindexNew->nStakeModifierChecksum = GetStakeModifierChecksum(pindexNew);
    if (!CheckStakeModifierCheckpoints(pindexNew->nHeight, pindexNew->nStakeModifierChecksum))
        return error("AddToBlockIndex() : Rejected by stake modifier checkpoint height=%d,  modifier=0x%016"PRIx64, pindexNew->nHeight, pindexNew->nStakeModifierChecksum);
非常感谢您的帮助,谢谢

您有一些类似printf()的代码,其中格式字符串中的占位符与相应的值不匹配。你必须改变他们中的任何一个,使他们匹配


也就是说,请在将来自己做一些研究,并提供一个最小的例子。如果您不提供有关
pindexNew->nStakeModifierChecksum
error()
的信息,任何人都应该如何分析这个问题?

对不起,我不熟悉这些东西,只是在玩现有代码的分支。它在main.h中作为unsigned int-nStakeModifierChecksum;//索引校验和;仅在记忆中没有,抱歉,仍然不清楚。请创建一个.cpp文件,其中包含一个演示此问题的main()函数。这实际上应该是你理解问题的第一步,甚至在这里提问之前。