0

我正在尝试从https://github.com/encryptogroup/PSI.git运行代码,当我使用 gcc -c *.cpp 命令生成 .o 文件时,它给了我以下错误:

./crypto/crypto.h:165:2: error: no matching function for call to 'readCodeWords' readCodeWords(*codewords);

在crypto.h中,相关代码是

static void InitAndReadCodeWord(REGISTER_SIZE*** codewords) {
uint32_t ncodewords = m_nCodeWordBits;
uint32_t ncwintlen = 8;
*codewords = (REGISTER_SIZE**) malloc(sizeof(REGISTER_SIZE*) * ncodewords);
for(uint32_t i = 0; i < ncodewords; i++) {
    (*codewords)[i] = (REGISTER_SIZE*) malloc(sizeof(REGISTER_SIZE) * ((ncwintlen * sizeof(uint32_t)) / sizeof(REGISTER_SIZE)));
}
readCodeWords(*codewords);}

readCodeWords() 在 codewords.h 中定义,但我已经将它包含在 crypto.h 中,错误仍然存​​在。

4

1 回答 1

2

检查您用作参数的变量是否可以被函数参数接受。

我不确定 REGISTER_SIZE 是什么,我目前无法对其进行测试,但包含和函数似乎很好,也许类型不是。

更新

我能够检查您的代码,并且该函数采用 uint64_t,static void readCodeWords(uint64_t** codewords)并且 REGISTER_SIZE 的计算结果为uint32_tor unsigned long intor uint16_t,具体取决于系统。

#define MAX_INT (~0)
#if (MAX_INT == 0xFFFFFFFF)
#define MACHINE_SIZE_32
typedef uint32_t REGISTER_SIZE;

#elif (MAX_INT == 0xFFFFFFFFFFFFFFFF)
#define MACHINE_SIZE_64
typedef unsigned long int REGISTER_SIZE;

#else
#define MACHINE_SIZE_16
typedef uint16_t REGISTER_SIZE;

#endif

我可能只是与函数的参数不兼容。

于 2018-12-17T11:13:07.057 回答