2014-09-25 198 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

相關問題