2014-09-25 5 views
-3

Я работаю над некоторым кодом на C++, и во время компиляции я получаю предупреждение. Я знаю, что это никак не влияет на конечный результат, но мне нравится код, чтобы быть настолько чистым, насколько это возможно, предупреждение:format указывает тип unsigned 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->nStakeModifierChecksum или error()?

+0

Прошу прощения, я новичок в этом материале и просто играю с вилкой существующего кода. – whit

+0

Его в main.h как unsigned int nStakeModifierChecksum; // контрольная сумма индекса; только в-memeory – whit

+0

Нет, извините, все еще непонятно. Создайте один .cpp-файл, содержащий единственную функцию main(), которая демонстрирует проблему. Это должно быть первым шагом для вас, чтобы понять проблему, даже прежде чем спрашивать здесь. –