我正在编写一些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);
~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
有问题的代码是:
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);
非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
你有一些printf() - 类似的代码,其中格式字符串中的占位符与相应的值不匹配。您必须更改它们中的任何一个才能匹配。
那就是说,请将来自己做一些研究并提供一个最小的例子。如果您不提供有关pindexNew->nStakeModifierChecksum
或error()
的信息,有谁应该分析问题?