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

 
 
 
Reply to this topicStart new topic
> IAR наведение порядка
Nestorovich
сообщение Feb 28 2006, 17:25
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 27-05-05
Пользователь №: 5 465



Есть 3 проекта на 70 процентов одинаковые: в зависимости отпринятой по UART команды запускается .программа на выполнение . Проекты отличаются тем что в разных проектах в зависимости от принятой команды вызываются разные функции. Собрать все функции в одном проекте не хватает программной памяти, поэтому у меня сейчас 3 проекта, и если делаешь изменения в одном, то надо не забыть во втором и т д. Вообщем ерунда надо привести все в порядок. Вопрос как. Первый вариант: вынести все общие функции в отдельный файл и подключить к проектам, второй вариант: иметь один проект с разными "опциями" и в зависимости от этих "опций" при компиляции указывать компилятору какой файл подключать. Мне второй вариант больше нравиться но как его реализовать я не знаю. Помогите люди добрые.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 28 2006, 17:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Nestorovich @ Mar 1 2006, 00:25) *
Есть 3 проекта на 70 процентов одинаковые: в зависимости отпринятой по UART команды запускается .программа на выполнение . Проекты отличаются тем что в разных проектах в зависимости от принятой команды вызываются разные функции. Собрать все функции в одном проекте не хватает программной памяти, поэтому у меня сейчас 3 проекта, и если делаешь изменения в одном, то надо не забыть во втором и т д. Вообщем ерунда надо привести все в порядок. Вопрос как. Первый вариант: вынести все общие функции в отдельный файл и подключить к проектам, второй вариант: иметь один проект с разными "опциями" и в зависимости от этих "опций" при компиляции указывать компилятору какой файл подключать. Мне второй вариант больше нравиться но как его реализовать я не знаю. Помогите люди добрые.


Если уж Вы пишите на Си, то должны знать про директивы условной компиляции :-) вот Вам пример:

Код


// в начале модуля

#define NEED_EXEC_FUN_3

....

// где то посреди необъятных просторов модуля

#ifdef NEED_EXEC_FUN_1

void Fun1(void){

...

}

#else

#ifdef NEED_EXEC_FUN_2

void Fun2(void){

...

}

#else

#ifdef NEED_EXEC_FUN_3

void Fun3(void){

...

}

#endif

#endif

#endif


--------------------
Go to the top of the page
 
+Quote Post
Nestorovich
сообщение Feb 28 2006, 18:02
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 27-05-05
Пользователь №: 5 465



теперь знаю спасибо, а переменные так можно обьявлять
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Feb 28 2006, 18:16
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
а переменные так можно обьявлять

Да можно, обработка происходит на уровне текстового
файла, т.е. куски текста между директивами просто не попадают к компилятору


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 28 2006, 20:20
Сообщение #5


кекс
******

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



Цитата(prottoss @ Feb 28 2006, 19:56) *
Если уж Вы пишите на Си, то должны знать про директивы условной компиляции :-) вот Вам пример:

Условная компиляция зависит не от языка, а от компилятора!
Многие компиляторы поддерживают эту очень полезную вещь, а язык может быть любым.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Mar 1 2006, 04:07
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Nestorovich @ Feb 28 2006, 22:25) *
Есть 3 проекта на 70 процентов одинаковые: в зависимости отпринятой по UART команды запускается .программа на выполнение . Проекты отличаются тем что в разных проектах в зависимости от принятой команды вызываются разные функции. Собрать все функции в одном проекте не хватает программной памяти, поэтому у меня сейчас 3 проекта, и если делаешь изменения в одном, то надо не забыть во втором и т д. Вообщем ерунда надо привести все в порядок. Вопрос как. Первый вариант: вынести все общие функции в отдельный файл и подключить к проектам, второй вариант: иметь один проект с разными "опциями" и в зависимости от этих "опций" при компиляции указывать компилятору какой файл подключать. Мне второй вариант больше нравиться но как его реализовать я не знаю. Помогите люди добрые.


Можно, конечно сделать и директивами условной компиляции, определяя конфигурацию в makefile или прямо в IDE от IAR. Это быстрый путь.
Но я бы вынес одинаковые части в отдельные файлы/каталоги и поставил бы проект под систему контроля версий. Это более долгий путь к освоению, но он имеет неоспоримые преимущества.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Mar 1 2006, 13:43
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
Условная компиляция зависит не от языка, а от компилятора!
Многие компиляторы поддерживают эту очень полезную вещь, а язык может быть любым.

Несколько спорно. Условная компиляция стандартная фича С и любой стандартный тулчейн обязан ее поддержать.
С другой стороны никто не мешает стандартный С препроцессор
прицепить к любому нестандартному компилятору.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post

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

 


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


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