错误:成员引用基类型' uint32_t'(又名' unsigned int')不是结构或联合

时间:2017-06-05 16:38:32

标签: c++ bitcoin blockchain bitcoind

Hey Stackoverflow社区, 现在我有以下问题:我想用mac osx.10.11编译c ++。但每次我想制作代码时它都会给我一个错误代码。我已经用Google搜索了,但我一无所获。

hashGenesisBlock = uint256("0x01");
if (true && genesis.GetHash() != hashGenesisBlock)
        {
            Logprintf("recalculating params for mainnet.\n");
            Logprintf("old mainnet genesis nonce: %s\n", genesis.nNonce.ToString().c_str());
            Logprintf("old mainnet genesis hash:  %s\n", hashGenesisBlock.ToString().c_str());
            // deliberately empty for loop finds nonce value.
            for(genesis.nNonce == 0; genesis.GetHash() > bnProofOfWorkLimit; genesis.nNonce++){ } 
            Logprintf("new mainnet genesis merkle root: %s\n", genesis.hashMerkleRoot.ToString().c_str());
            Logprintf("new mainnet genesis nonce: %s\n", genesis.nNonce.ToString().c_str());
            Logprintf("new mainnet genesis hash: %s\n", genesis.GetHash().ToString().c_str());
        }

错误消息:

Making all in src
  CXX      libgamebit_common_a-chainparams.o
chainparams.cpp:143:13: error: use of undeclared identifier 'Logprintf'
            Logprintf("recalculating params for mainnet.\n");
            ^
chainparams.cpp:144:72: error: member reference base type 'uint32_t'
      (aka 'unsigned int') is not a structure or union
  ...Logprintf("old mainnet genesis nonce: %s\n", genesis.nNonce.ToString().c...

你有任何想法为什么我会遇到这种错误? 其实我试图编译bitcoind。

我希望你能帮助我。 谢谢!

1 个答案:

答案 0 :(得分:1)

您应该专注于第一个编译器错误:

error: use of undeclared identifier 'Logprintf'

也就是说,您正在使用此标识符Logprintf,可能是一个函数,但它未定义。可能,你错过了定义它的#include

下一个错误:

error: member reference base type 'uint32_t'

如果你看第144行,第72栏,就是这个:

Logprintf("old mainnet genesis nonce: %s\n", genesis.nNonce.ToString()
                                                           ^
                                                  column 72|

因此,您的nNonce类型为uint32_t,并且您正尝试在其上调用成员函数ToString()。但是C ++中的基本类型没有成员函数,只有结构(即类)和联合。

我怀疑您正在尝试使用纯C ++编译器编译某些C ++ / CLI代码。我担心会有一些翻译。

最后一个错误,一旦你有Logprintf的正确定义,就可以通过写下来解决:

Logprintf("old mainnet genesis nonce: %u\n", (unsigned)genesis.nNonce);