Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR Studio Toolchain [РЕШЕНО]
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Alt.F4
Добрый день.
Начал разбираться с AVR Studio Toolchain.
Написал дома тестовый код и скомпилировал, принес проект на работу и никак не выходит собрать, толкает ошибки в подключенных файлах *.с
'переменная' undeclared (first use in this function)
ОК, поключаю хидер в этот файл, уже пишет multiple definition причем указывает на одну и туже строку.
Но, что интересно! Проблема решается тупым удалением прикрепленных файлов в левой колонке проекта (остается только один main).
Как это объяснить?
Спасибо.
Нажмите для просмотра прикрепленного файла
_Артём_
Цитата(Alt.F4 @ May 18 2012, 23:01) *
Написал дома тестовый код и скомпилировал, принес проект на работу и никак не выходит собрать, толкает ошибки в подключенных файлах *.с
'переменная' undeclared (first use in this function)
ОК, поключаю хидер в этот файл, уже пишет multiple definition причем указывает на одну и туже строку.
Но, что интересно! Проблема решается тупым удалением прикрепленных файлов в левой колонке проекта (остается только один main).
Нажмите для просмотра прикрепленного файла

Вы бы проект выложили.
Возможные варианты:
- инклудятся с-файлы
- функция которые должны быть static inline объявлены как-то не так
- ещё много-много вариантов
Alt.F4
Повторюсь, проблема устраняется удалением приложенных файлов из окна проекта слева, оставив только make.
Спасибо.
Нажмите для просмотра прикрепленного файла
_Артём_
Цитата(Alt.F4 @ May 18 2012, 23:39) *
проблема устраняется удалением
Нажмите для просмотра прикрепленного файла


Ну тут проблема может и устраняется. Так и будете её создавать- устранять?

Этот код нужно изменить:
Код
#include "Init.c"
#include "kernel.c"

на такой:
Код
#include "Init.h"
#include "kernel.h"

И соответственно создать файлы kernel.h, Init.h в которых написать что-то такое
Код
#ifndef INIT_H
#define INIT_H
void InitRTOS(void);
void  Idle(void);
и так далее
#endif


Либо переименовать kernel.с, Init.с в kernel.h, Init.h и добавить к функциям static:
Код
static inline void  Idle(void)
{
/// код
}
и не пытаться из компилировать.
Alt.F4
_Артём_, спасибо большое, тема раскрыта! cheers.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.