ошибка g ++: word64 не называет тип

0

Я пытался скомпилировать программный пакет. Во время компиляции я получаю эту ошибку

sha.cpp:29: error: ‘word64 does not name a type

Я прошел через исходный код. Соответствующая часть

#if HAVE64
    word64 bytes;
#else
    word32 bytesHi, bytesLo;
#endif

от sha.cpp, строка № 29-33

И я обнаружил, что word64 был объявлен следующим образом в другом файле

#include <limits.h>

#ifdef __cplusplus
extern "C" {
#endif

#if UCHAR_MAX == 0xff
typedef unsigned char byte;
typedef signed char int8;
#else
#error This machine has no 8-bit type
#endif

#if UINT_MAX == 0xffff
typedef uint word16;
typedef int int16;
#elif USHRT_MAX == 0xffff
typedef unsigned short word16;
typedef short int16;
#else
#error This machine has no 16-bit type
#endif

#if UINT_MAX == 0xfffffffful
typedef uint word32;
typedef int int32;
#elif ULONG_MAX == 0xfffffffful
typedef ulong word32;
typedef long int32;
#else
#error This machine has no 32-bit type
#endif

#if ULONG_MAX > 0xfffffffful
#if ULONG_MAX == 0xfffffffffffffffful
typedef ulong bnword64;
#define BNWORD64 bnword64
#define HAVE64 1
#endif
#endif



#ifndef HAVE64
#if defined(ULONG_LONG_MAX) || defined (ULLONG_MAX) || defined(ULONGLONG_MAX)
typedef unsigned long long word64;
typedef long long int64;
#define HAVE64 1
#endif
#endif

И моя система

Linux EmbeddedLinux 2.6.32-431.1.2.el6.x86_64 #1 SMP Sun Nov 24 09:37:37 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

Компилятор, который я использую для компиляции

g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)

Я просмотрел интернет, чтобы зафиксировать это, но не нашел подсказки. Любая помощь будет оценена

  • 0
    Кажется, отсутствует typedef для word64 и word32 . Вы искали кодовую базу для этого?
  • 0
    Разве не было бы неплохо, если бы комментатор прокомментировал, как дела, если он или она что-то попробовал и работал или нет?
Теги:
64bit
g++

1 ответ

0

Кажется, что у вас отсутствует файл заголовка, где определены слова64 и слово32. Попробуйте найти эту библиотеку с текстовым поиском. Если вы не найдете библиотеку, то трудно понять, что автор библиотеки пытался определить как word63/32.

Вы можете попробовать следующее предположение (и это предположение, поэтому оно может не сработать): добавьте следующие строки в sha.cpp перед фрагментом, который вы указали:

#include <stdint.h>

typedef uint64_t word64;
typedef uint32_t word32;

В противном случае, если это не сработает, попробуйте следующее:

#include <stdint.h>

typedef int64_t word64;
typedef int32_t word32;

Удачи!

  • 1
    Вы опечатали имена типов; это должно быть typedef uint64_t word64; typedef int64_t int64;
  • 0
    Ты прав, Келтар. Опасности работы с макушкой головы ... Это сейчас отредактировано. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню