Не могу вызвать функцию из подключаемого файла. Пишет Error[e46]: Undefined external "InitUART" referred in main
Как правильно описать вызов и саму функцию в файлах?
Пожалуйста, поделитесь небольшим проектом для IAR для изучения. А то никаких примеров нет.
В main.c пишу:
#include "uart.h"
int main( void )
{
InitUART();
}
В uart.h:
void InitUART( void );
В uart.c:
#include "uart.h"
void InitUART( void )
{
....
}
haker_fox
Feb 20 2006, 02:07
Честно говоря не знаю в чем дело, но я набросал Ваш примерчик и он скомпилировался без проблем. Пример в присоединенном файле.
Ваш пример работает. Но мой отказывается. Если Вас не затруднит, посмотрите мой. Может я что в настройках напутал...
haker_fox
Feb 20 2006, 03:40
Добавьте файлы uart.h и uart.c в workspace (Add Files).
И еще: исправть в uart.h название void InitUART( void ); на void init_uart(void);
Файлы добавил в проект, всё заработало. Спасибо. Я и не думал, что их надо через Add Files добавлять, думал #include достаточно.
Название void InitUART( void ) проглядел, это от старых настроек, менял на Ваши. А то бывает, компиляторам не наравятся какие-нибудь названия.
Igor26
Feb 20 2006, 13:36
Цитата(haker_fox @ Feb 20 2006, 06:40)

Добавьте файлы uart.h и uart.c в workspace (Add Files).
И еще: исправть в uart.h название void InitUART( void ); на void init_uart(void);
Совершенно без разницы! Я тоже пишу типа InitUART или ReadFromUART. От BC привычка.
Что в Кейле для х51, что в ИАРе для AVR совершенно никаких сложностей не вызывало.
IgorKossak
Feb 20 2006, 13:38
В проект, как правило, добавляются *.с *.срр файлы.
А *.h файлы подключаются именно через #include
MichaZ
Feb 21 2006, 21:35
я бы делал следующим образом:
1.добавить оба файла (uart.c , uart.h) в проэкт.в uart.h - заголовки функций,в uart.c - #include "uart.h" и определения функций.
2.в файле,где нужно использовать функции из uart.c в начале файла обьявляем :
external void UartInit();
external unsigned char UartReceive() и так далее
defunct
Feb 21 2006, 22:42
Цитата(MichaZ @ Feb 21 2006, 23:35)

1.добавить оба файла (uart.c , uart.h) в проэкт.в uart.h - заголовки функций,в uart.c - #include "uart.h" и определения функций.
2.в файле,где нужно использовать функции из uart.c в начале файла обьявляем :
external void UartInit();
external unsigned char UartReceive() и так далее
зачем такие сложности создавать?
зачем писать external если файл с реализацией функций подключен к проекту?
см. пост
Цитата
IgorKossak Дата Feb 20 2006, 15:38
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.