28.02.2013, 00:58
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Перенос кода на Си с ПК на МК ,трудности
Переношу код программы написанной на Си с ПК на МК, На ПК данный код компилируется и нормально работает, а вот в компиляторе CV возникла проблема с следующим куском кода
Код:
|
void des(unsigned char key[], byte mode, unsigned char data[])
{
byte i;
byte left[8];
byte right[8];
byte *p = left; //‹‹‹‹ Ругается на эту строку |
пишет non-address/-constsnt initializer
Как это исправить?
|
|
|
|
28.02.2013, 01:16
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Перенос кода на Си с ПК на МК ,трудности
Тогда вот так:
Код:
|
byte *p;
p = &left[0]; |
Последний раз редактировалось Yurkin2007; 28.02.2013 в 01:22.
|
|
|
|
28.02.2013, 01:19
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Re: Перенос кода на Си с ПК на МК ,трудности
нет, не проходит , я уже это пробовал. компилятор выдает тоже сообщение об ошибке.
Вот засада
|
|
|
|
28.02.2013, 01:22
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Re: Перенос кода на Си с ПК на МК ,трудности
Вот ещё код
Код:
|
static void rightRot(byte key[])
{
byte *p = key;‹‹ |
Таже ошибка , только тут указатель на массив который передается в функцию.
|
|
|
|
28.02.2013, 01:25
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Перенос кода на Си с ПК на МК ,трудности
byte *p - это байт, а не указатель
p - это указатель
|
|
|
|
28.02.2013, 01:26
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Re: Перенос кода на Си с ПК на МК ,трудности
Мда, под Linux и Windows компиляция и работа программы проходит нормально, а тут как-то не пошло.
|
|
|
|
28.02.2013, 01:30
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Re: Перенос кода на Си с ПК на МК ,трудности
Вот пример всей функции, может по нем будет понятно как переделать код чтобы компилятор его проглотил.
Код:
|
static void rightRot(byte key[])
{
byte *p = key;
byte i = 3;
byte carry = 0;
carry = 0;
if(*p & 1) carry = 0x08;
do {
*p = (*p ›› 1) | ((p[1] & 1) ? 0x80 : 0);
p++;
} while(--i);
*p = (*p ›› 1) | carry;
} |
|
|
|
|
28.02.2013, 01:33
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Re: Перенос кода на Си с ПК на МК ,трудности
Вот другая функция
Код:
|
void MD5_des(unsigned char key[], byte mode, unsigned char data[])
{
byte i;
byte left[8];
byte right[8];
byte *p = left;
unsigned short DESShift ;
if (mode & 4) DESShift= 0x8103; else DESShift= 0xc081;
for(i=3; i›0; i--)
{
*p = (key[i-1] ‹‹ 4) | (key[i] ›› 4);
p++;
}
left[3] = key[0] ›› 4;
right[0] = key[6];
right[1] = key[5];
right[2] = key[4];
right[3] = key[3] & 0x0f;
if(mode & DES_IP) doIp(data);
do {
if(!(mode & DES_RIGHT))
{
leftRotKeys(left, right);
if(!(DESShift & 0x8000)) leftRotKeys(left, right);
}
desRound(left, right, data, mode, key[7]);
if(mode & DES_RIGHT)
{
rightRotKeys(left, right);
if(!(DESShift & 0x8000)) rightRotKeys(left, right);
}
DESShift ‹‹= 1;
} while(DESShift);
swap(data, data+4);
if(mode & DES_IP_1) doIp_1(data);
} |
|
|
|
|
28.02.2013, 01:38
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Перенос кода на Си с ПК на МК ,трудности
Сообщение от Zemlyanov
|
Мда, под Linux и Windows компиляция и работа программы проходит нормально, а тут как-то не пошло.
|
Хороший повод отказаться от использования CV. AVRGCC и IAR наверняка примут такую конструкцию.
|
|
|
|
28.02.2013, 01:43
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Re: Перенос кода на Си с ПК на МК ,трудности
Сообщение от _Артём_
|
Хороший повод отказаться от использования CV. AVRGCC и IAR наверняка примут такую конструкцию.
|
Уже поздно , поезд ушел.
Чувствую меня ещё ждут проблемы при переносе этого кода под STM32 в CoIDE
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:34.
|
|