Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IAR: когда include код по .h-файлам, не работает. При включении по .cpp-файлам, работает 
:(
    Опции темы
VLeshka
Дата 20.4.2018, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.4.2018

Репутация: нет
Всего: нет



Когда в main включается .cpp, в который включается файл .h, то этот код работает.

Когда в main включается .h, (а файл .cpp добавляется в проект в окне Files), то этот код не работает.
Пишет:
Error[Pe165]: too few arguments in function call C:\IAR\General\gsm.cpp 571 
Error[Pe167]: argument of type "int" is incompatible with parameter of type "unsigned char const *" C:\IAR\General\gsm.cpp 572 

Почему?

Код .h:
Код

void AddToPointUCS2(const unsigned char* word, unsigned char wordCnt);
void AddToPointUCS2(unsigned char number);


Код .cpp:
Код

void AddToPointUCS2(const unsigned char* word, unsigned char wordCnt)
{
  const unsigned char* wordEnd = word + wordCnt - 1;
  for (; word<=wordEnd; word++)
    if ( (0x0D == *word) | (0x0A == *word) )
    {
      AddToPointUCS2(0x00); //ошибка
      AddToPointUCS2(0x0A); //ошибка
    }
    else
    if (*word < 0xA8)
    {
      AddToPointUCS2(0x00); //ошибка
      AddToPointUCS2(*word); //ошибка
    }
    else
    {
      AddToPointUCS2(0x04); //ошибка
      AddToPointUCS2(*word - 0xB0); //ошибка
    }
}
void AddToPointUCS2(unsigned char number)
{
  *(sds.pBuffer)++ = LCD_NumberToCharHex(number >> 4);
  *(sds.pBuffer)++ = LCD_NumberToCharHex(number & 0x0F);
}

PM MAIL   Вверх
Romikgy
Дата 20.4.2018, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(VLeshka @  20.4.2018,  15:11 Найти цитируемый пост)
AddToPointUCS2(0x00);


AddToPointUCS2((unsigned char )0x00); 
а так ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
VLeshka
Дата 21.4.2018, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.4.2018

Репутация: нет
Всего: нет



Цитата(Romikgy @ 20.4.2018,  19:16)
Цитата(VLeshka @  20.4.2018,  15:11 Найти цитируемый пост)
AddToPointUCS2(0x00);


AddToPointUCS2((unsigned char )0x00); 
а так ?

Тоже.
PM MAIL   Вверх
Romikgy
Дата 21.4.2018, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(VLeshka @  20.4.2018,  15:11 Найти цитируемый пост)
gsm.cpp

весь файл дайте 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
VLeshka
Дата 23.4.2018, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.4.2018

Репутация: нет
Всего: нет



Цитата(Romikgy @ 21.4.2018,  21:50)
Цитата(VLeshka @  20.4.2018,  15:11 Найти цитируемый пост)
gsm.cpp

весь файл дайте

Он очень большой.
PM MAIL   Вверх
VLeshka
Дата 23.4.2018, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.4.2018

Репутация: нет
Всего: нет



Но я нашёл причину. Проверил на отдельном компьютере. Я использовал только код, приведённый мною в первом посте.

Утра вечера мудренее. smile Заметил, что ругается *только* в приведённой мною подпрограмме. А если вызывается
Код

AddToPointUCS2(0x00);

не из упомянутой мною подпрограммы, а из любого другого места, где виден 
Код

void AddToPointUCS2(unsigned char number) );

то работает нормально. Как будто из подпрограммы:
Код

void AddToPointUCS2(const unsigned char* word, unsigned char wordCnt);

не видно заголовков подпрограмм, объявленных в .h-файле.

Добавил .cpp в строку:
Код

extern void AddToPointUCS2(unsigned char number);

- и код заработал. Я чего-то не понимаю? smile Где в каком справочнике эта особенность описана?

Это сообщение отредактировал(а) VLeshka - 23.4.2018, 10:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1236 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.