реклама на сайте
подробности

 
 
> Warnig [Pe167], Не понимаю
Igor26
сообщение Oct 25 2005, 12:11
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Уважаемые коллеги! Объясните пожалуйста, что не так. Компилирую файл:

unsigned char Buff[xx];

void F1(void)
{
-----------
Func(Buff);
-----------
}
Объявляю массив Buff[xx] в хидере File1.h следующим образом: extern unsigned char Buff[xx];
Компиляция этого файла проходит прекрасно.

Есть в проекте другой файл:

#include "File1.h"

void F2(void)
{
-------------
Func(Buff);
-------------
}
Так вот, при компиляции этого файла, выдается следующее:
Warning[Pe167]: argument of type "char *" is incompatible with parameter of type "unsigned char *"

Прототип функции Func: void Func(unsigned char *XXX) и она расположена в третьем файле. Хидер
с её прототипом подключен в обоих файлах.

Почему компилятор в этом случае стал считать, что входной параметр функции Funk типа CHAR, ведь
явно же указано, что UNSIGNED CHAR? smile3046.gif

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
radist
сообщение Oct 26 2005, 05:39
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 122
Регистрация: 24-05-05
Пользователь №: 5 329



Дело в том, что компилятор языка С по-разному работает с именами массивов и указателями при размещении массивов и указателей на них в разных файлах (ну так устроен компилятор, что подеаешь!). Поэтому, чтобы проблем избёжать лучше сделать так:
"
unsigned char Buff[xx];
unsigned char * ptrBuff=Buff;

void F1(void)
{
-----------
Func(ptrBuff);
-----------
}
"
Объявлять массив Buff[xx] в хидере File1.h следующим образом: extern unsigned char *ptrBuff;

Соответственно, второй файл:
"
#include "File1.h"

void F2(void)
{
-------------
Func(ptrBuff);
-------------
}
"
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 26 2005, 06:13
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(radist @ Oct 26 2005, 08:39)
...unsigned char * ptrBuff=Buff;
...
*

Это же лишняя переменная в памяти.
Тогда уж лучше в хедере обьявить:
const unsigned char * ptrBuff=Buff;

Если поможет.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 11:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016