2014-09-25 338 views
-3

我正在研究一些C++代码,并且在编译时收到警告。我知道它并没有真正影响到最终的结果,但我喜欢的代码尽可能干净,警告:格式指定类型'无符号long long',但参数的类型为'unsigned int'

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); 

任何帮助非常感谢,谢谢!

回答

1

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

也就是说,今后请自己做一些研究,并提供一个最小的例子。如果你没有提供关于pindexNew->nStakeModifierChecksumerror()的信息,那么任何人都应该分析这个问题?

+0

对不起,我是新来的这个东西,只是玩现有的代码分支。 – whit 2014-09-25 18:47:15

+0

它在main.h中作为unsigned int nStakeModifierChecksum; //索引的校验和;不在内,只有 – whit 2014-09-25 18:47:44

+0

不,对不起,还不清楚。请创建一个.cpp文件,其中包含一个演示此问题的main()函数。实际上,这应该是你了解问题的第一步,即使在问这里之前。 – 2014-09-26 15:41:08

相关问题