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

 
 
 
Reply to this topicStart new topic
> Вызов функции из другого файла, Как правильно оформить?
SZ0
сообщение Feb 20 2006, 01:27
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Не могу вызвать функцию из подключаемого файла. Пишет 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 )
{
....
}
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 20 2006, 02:07
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Честно говоря не знаю в чем дело, но я набросал Ваш примерчик и он скомпилировался без проблем. Пример в присоединенном файле.
Прикрепленные файлы
Прикрепленный файл  test.zip ( 11.96 килобайт ) Кол-во скачиваний: 34
 


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
SZ0
сообщение Feb 20 2006, 02:32
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Спасибо. Сейчас проверю.
Go to the top of the page
 
+Quote Post
SZ0
сообщение Feb 20 2006, 03:07
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Ваш пример работает. Но мой отказывается. Если Вас не затруднит, посмотрите мой. Может я что в настройках напутал...
Прикрепленные файлы
Прикрепленный файл  test1.rar ( 15.23 килобайт ) Кол-во скачиваний: 29
 
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 20 2006, 03:40
Сообщение #5


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Добавьте файлы uart.h и uart.c в workspace (Add Files).
И еще: исправть в uart.h название void InitUART( void ); на void init_uart(void);


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
SZ0
сообщение Feb 20 2006, 03:54
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Файлы добавил в проект, всё заработало. Спасибо. Я и не думал, что их надо через Add Files добавлять, думал #include достаточно.
Название void InitUART( void ) проглядел, это от старых настроек, менял на Ваши. А то бывает, компиляторам не наравятся какие-нибудь названия.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Feb 20 2006, 13:36
Сообщение #7


Знающий
****

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



Цитата(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 совершенно никаких сложностей не вызывало.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Feb 20 2006, 13:38
Сообщение #8


Шаман
******

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



В проект, как правило, добавляются *.с *.срр файлы.
А *.h файлы подключаются именно через #include
Go to the top of the page
 
+Quote Post
MichaZ
сообщение Feb 21 2006, 21:35
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 20-10-05
Пользователь №: 9 886



я бы делал следующим образом:

1.добавить оба файла (uart.c , uart.h) в проэкт.в uart.h - заголовки функций,в uart.c - #include "uart.h" и определения функций.
2.в файле,где нужно использовать функции из uart.c в начале файла обьявляем :
external void UartInit();
external unsigned char UartReceive() и так далее
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 21 2006, 22:42
Сообщение #10


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(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
Go to the top of the page
 
+Quote Post

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

 


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


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