Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
 Аватар для артист
50 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,615

Не определён идентификатор

19.03.2018, 23:48. Показов 6716. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ругается на - CRC08.

В этой строке:
C++
1
class CRC08Hash : public CRCHash<CRC08, 0x8CU, 0xFFU, 0xFFU> {};
Весь инклюд(86 строка):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#ifndef CRCHashH
#define CRCHashH
 
//******************************************************************************
// Template class 'CRCHash' implements mirror-algorithm of CRC calculation.
 
template <typename T, const T POLYNOM, const T INITIAL, const T FINAL>
class CRCHash
{
private:
    T CRC;
    struct CRCTable { T Data[256]; CRCTable(void); };
    static const CRCTable Table;
public:
    CRCHash(void) : CRC(INITIAL) {;};
    CRCHash(const CRCHash & iCRCHash) : CRC(iCRCHash.CRC) {;};
    void Reset(void) { CRC = INITIAL; };
    void Update(const void *Buffer, size_t Length);
    inline void Update(unsigned char Value);
    T Evaluate(void) const { return CRC ^ FINAL; };
    static T Evaluate(const void *Buffer, size_t Length);
};
 
template <typename T, T POLYNOM, T INITIAL, T FINAL>
const typename CRCHash<T, POLYNOM, INITIAL, FINAL>::CRCTable
CRCHash<T, POLYNOM, INITIAL, FINAL>::Table;
 
 
//******************************************************************************
// Warning: Microsoft Visual C++ Compiler cannot compile methods of inner
// nested classes inside a template defined outside of template body! For inner
// nested classes inside a template, you must define functions inside the class.
// Such functions automatically become inline functions. This error is
// generated for code allowed by the standard of C++ language, however, not
// yet supported by Microsoft Visual C++. So, if you get an error, just move
// the method into a nested class of a template.
 
template <typename T, T POLYNOM, T INITIAL, T FINAL>
CRCHash<T, POLYNOM, INITIAL, FINAL>::
CRCTable::CRCTable(void)
{
    for (int i = 0, t = 0; i < 256; t = 8, i++)
    {
        Data[i] = i;
        while (t--) Data[i] = Data[i] >> 1 ^ (Data[i] & 1 ? POLYNOM :0);
    }
}
 
//******************************************************************************
 
template <typename T, T POLYNOM, T INITIAL, T FINAL>
void CRCHash<T, POLYNOM, INITIAL, FINAL>::
Update(unsigned char Value)
{
    CRC = CRC >> 8 ^ Table.Data[Value ^ CRC & 0xFFU];
}
 
//******************************************************************************
 
template <typename T, T POLYNOM, T INITIAL, T FINAL>
void CRCHash<T, POLYNOM, INITIAL, FINAL>::
Update(const void *Buffer, size_t Length)
{
    register const unsigned char * Block =
        static_cast<const unsigned char *>(Buffer);
    while (Length--) Update(*Block++);
}
 
//******************************************************************************
 
template <typename T, T POLYNOM, T INITIAL, T FINAL>
T CRCHash<T, POLYNOM, INITIAL, FINAL>::
Evaluate(const void *Buffer, size_t Length)
{
    CRCHash Instance;
    Instance.Update(Buffer, Length);
    return Instance.Evaluate();
}
 
//******************************************************************************
 
typedef unsigned char CRC08;
typedef unsigned short CRC16;
typedef unsigned long  CRC32;
 
class CRC08Hash : public CRCHash<CRC08, 0x8CU, 0xFFU, 0xFFU> {};
class CRC16Hash : public CRCHash<CRC16, 0xA001U, 0x0000U, 0x0000U> {};
class CRC32Hash : public CRCHash<CRC32, 0xEDB88320UL, 0xFFFFFFFFUL, 0xFFFFFFFFUL> {};
 
//******************************************************************************
 
// typedef unsigned __int64 CRC64;
// class CRC64Hash : public CRCHash<CRC64, 0x000000000000001BUI64, 0xFFFFFFFFFFFFFFFFUI64, 0xFFFFFFFFFFFFFFFFUI64> {};
 
//******************************************************************************
 
#endif
Ошибки в имени нет, странно, что не так то?
Мне кажется это из за типов, однобайтные, двухбайтные.
Код 2007 года.

Добавлено через 9 минут
П.с. я в 25 строке изменил:
C++
1
2
const CRCHash<T, POLYNOM, INITIAL, FINAL>::CRCTable
CRCHash<T, POLYNOM, INITIAL, FINAL>::Table;
>>>
C++
1
2
const typename CRCHash<T, POLYNOM, INITIAL, FINAL>::CRCTable
CRCHash<T, POLYNOM, INITIAL, FINAL>::Table;
До этого была ошибка C4346 в 26й строке.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2018, 23:48
Ответы с готовыми решениями:

идентификатор _ReturnAddr идентификатор не определён; _ReturnAddress идентификатор не найден
#include &quot;Hooks.h&quot; #include &quot;Hacks.h&quot; #include &quot;Chams.h&quot; #include &quot;Menu.h&quot; #include &quot;Interfaces.h&quot; #include &quot;RenderManager.h&quot; ...

Требуется идентификатор (идентификатор с не определён)
Не могу понять в чём ошибка данного записи.Пожалуйста, объясните!!! vector &lt;pair&lt;int, int&gt;&gt; STACK; auto = *STACK.rbegin(); //...

Идентификатор не определён
class Bird { protected: float Wings, Speed; public: void Input(); void Show(); Bird(float _Wings, float _Speed) { Wings =...

9
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
20.03.2018, 00:03
Лучший ответ Сообщение было отмечено артист как решение

Решение

Проблема, возможно, в том, что выбранная вами IDE не подходящая, или окружение настроено не так. Это лишь мое предположение.
Попробуйте взять эту версию.

В чем компилите?
1
 Аватар для артист
50 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,615
20.03.2018, 00:27  [ТС]
Цитата Сообщение от Xo66um Посмотреть сообщение
В чем компилите?
VS 15.

Добавлено через 12 минут
Цитата Сообщение от Xo66um Посмотреть сообщение
Попробуйте взять эту версию.
Здесь тоже ошибка:
Ошибка C2105: для "++" требуется левостороннее значение
C++
1
Update(*static_cast<const unsigned char *>(Buffer)++);
Поставил ++ слева(справа убрал):
Ошибка C3892 Buffer: невозможно присваивать значения переменной, которая объявлена как константа
Поставил + 1. Скомпилилось.
C++
1
Update(*static_cast<const unsigned char *>(Buffer) + 1);
Ничего же не изменится от этого?
По идее если слева, сначала плюсует, потом передаёт функции.
А когда справа, передаёт функции текущее значение, потом плюсует.

Или в С++ не так?
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
20.03.2018, 00:37
Цитата Сообщение от артист Посмотреть сообщение
Или в С++ не так?
Именно так.

Цитата Сообщение от артист Посмотреть сообщение
Скомпилилось.
Главный вопрос - работает?
1
 Аватар для артист
50 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,615
20.03.2018, 00:38  [ТС]
16 и 32 нормально вычисляет, а 8 какую-то закорючку выдаёт:
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
20.03.2018, 00:43
Лучший ответ Сообщение было отмечено артист как решение

Решение

Цитата Сообщение от артист Посмотреть сообщение
а 8 какую-то закорючку выдаёт
Затрудняюсь сходу ответить. Попробуйте в буфер вывести значение и поставьте на него точку останова - посмотрите, что приходит.
1
 Аватар для артист
50 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,615
20.03.2018, 01:05  [ТС]
Если передавать в функцию строку - работает.
C++
1
cout << '\t' << "CRC-8 : " << (int) CRC08Hash::Evaluate(str, len) << endl;
А если побайтно - нет.
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
20.03.2018, 03:26
Лучший ответ Сообщение было отмечено артист как решение

Решение

Не знаю, в чем причина. Может еще кто поможет?

Например, я проверил строки "Hello world!" и "Welcome to CRC!" в онлайн калькуляторах CRC, совпадают только CRC16, остальные - нет.

Онлайн калькуляторы, на которых проверял:
Первый
Второй
1
 Аватар для артист
50 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,615
20.03.2018, 10:24  [ТС]
Да, это вообще не то оказалось, что мне было нужно. ))
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
20.03.2018, 10:29
Цитата Сообщение от артист Посмотреть сообщение
Да, это вообще не то оказалось, что мне было нужно. ))
Гляньте на другие алгоритмы, их ведь куча. Темы есть на этом же форуме, например здесь.

Про CRC можно почитать на Википедии, там и полиномы указаны, и их представления.

И думается мне, что придется еще и с архитектурой процессоров повозиться, на которых код будет запускаться. Но не уверен до конца, что это так.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.03.2018, 10:29
Помогаю со студенческими работами здесь

Идентификатор не определен
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; int voidmain() { int i,j,r; Long int b1,b2,S,a; for(a=1; a&lt;5; a++) ...

Идентификатор не определен
int main() { int a; сin &gt;&gt; a; //system(&quot;pause&quot;); }

Идентификатор не определен
Пишет что идентификатор х - не определён //простая программа которая демонстрирует использование функции mul() #include...

C++ идентификатор не определен
Приветствую. Помогите, пожалуйста, пофиксить данную ошибку: идентификатор _xor_ не объявлен SDK подключил, в свойствах пробовал...

Идентификатор не определен
дано задание: Удалить из одномерного массива первый отрицательный элемент, сдвинув оставшиеся к началу массива. делать надо через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru