Страница 1 из 4

вопрос по mikroc

Добавлено: Пн авг 01, 2016 13:23:17
ds3ds3
Здравствуйте! Подскажите, что нужно сделать чтобы использовать несколько исходников. Версия pro for pic 4.60 без лимита. Если добавить второй исходник (через меню проект - добавить новый файл), то его содержимое нельзя использовать в первом. А хотелось бы во второй сваливать все написанные функции, объявленные переменные, константы, дефайны, чтобы не мешались в основном исходнике. Заранее спасибо!

Re: вопрос по mikroc

Добавлено: Пн авг 01, 2016 14:04:36
ARV
ds3ds3 писал(а):А хотелось бы во второй сваливать все написанные функции, объявленные переменные, константы, дефайны, чтобы не мешались в основном исходнике.
я не знаю нюансов вашего mikroc, но желание ваше до добра не доведет. может быть, вы разберетесь все-таки, как правильно проект создать?

Re: вопрос по mikroc

Добавлено: Пн авг 01, 2016 14:42:02
alex_
ds3ds3, во первых создай свой проект, не надо пихать в тестовый, во вторых если нужные функции в другом файле просто инклудишь этот фаил.

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 06:15:53
ds3ds3
ARV писал(а):
ds3ds3 писал(а):А хотелось бы во второй сваливать все написанные функции, объявленные переменные, константы, дефайны, чтобы не мешались в основном исходнике.
я не знаю нюансов вашего mikroc, но желание ваше до добра не доведет. может быть, вы разберетесь все-таки, как правильно проект создать?
А я всегда думал, что функции должны быть в отдельном исходнике, а в основном - их вызовы, дабы избежать каши и постоянной прокрутки вверх-вниз. Ну да ладно, допустим все программы пишут километровой простыней в один исходник. Вопрос звучит так: как правильно подключить второй исходник, чтобы он работал?
Дальше: я не использую тестовый проект; а инклуд вызывает ошибку, т.к.:
В хелпе написано что инклуд используется для заголовочных файлов (.h). А для файлов проекта (.с) нужно использовать меню проект - добавить файл к проекту. Я так сделал - не работает. Может у того кто работал в микрос это получилось? К ним я и обращаюсь. Заранее спасибо.

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 07:05:39
ARV
я думаю, ваш компилятор все-таки соответствует общепринятым правилам создания и работы с проектами, поэтому выскажу свое мнение, как следует поступать.

во-первых, файлы *.h - это заголовочные файлы, в них перечисляются только описания (т.е. прототипы) функций соответствующего исходника, а так же необходимые константы, макросы и, иногда, переменные.
во-вторых, проект состоит обычно из простого перечисления файлов с исходными текстами, т.е. *.c. заголовочные файлы в состав проекта не включаются, т.к. сами по себе без исходников не представляют для компилятора ничего интересного, а используются благодаря директивам include в исходниках.
в-третьих, чтобы вам могли помочь, надо давать больше информации: скриншоты, копии сообщений об ошибках, сами исходники и т.п., ибо гадать, что именно вы делаете не так, как надо, никому не интересно.

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 07:06:48
alex_
Два исходника в один проект запихать не получиться void main() должен быть один на весть проект, в подключаемом файле могут находиться описание переменных, констант функций и сами функции, чтобы не писать всё это в основное тело программы. Я предпочитаю выносить все описания в фаил а сами функции под тело main. По поводу расширения подключаемых файлов - не важно какое оно будет, главное чтобы название файла и расширение совпадали например фаил funkcii.txt подключаем его #include "funkcii.txt" компилирует без вопросов если нет ошибок в синтаксисе.

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 07:24:08
ARV
alex_ писал(а):По поводу расширения подключаемых файлов - не важно какое оно будет
не важно для компилятора, но важно для программиста. не надо делать так, как не надо делать.

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 07:36:32
alex_
Товарищ спрашивал о том что не компилирует потому что не то расширение, вот я и ответил что компилятору всё равно, лишь бы имена совпадали, остальное дело этики, хотя по старике используют Н расширение, но по сути можно написать любое

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 08:27:22
ds3ds3
Я не говорил что нужно определенное расширение, я сказал что в микрос #include используется не для исходников:
http://download.mikroe.com/documents/co ... lusion.htm
там же есть ссылка "Add/Remove Files from Project" - есть скриншоты:
http://download.mikroe.com/documents/co ... om_project
Здесь показано как именно нужно добавлять файлы:
http://download.mikroe.com/documents/co ... om_project
Ежели я:
1) в одном файле пишу функцию мейн() - компилируется;
2) добавляю второй файл в проект, пишу в нём функцию test() - компилируется, но в ассемблер не добавляется, т.к. не используется;
3) main() { test() } - ошибка 131 324 Undeclared identifier 'test' in expression.

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 08:38:03
ARV
ds3ds3 писал(а):3) main() { test() } - ошибка 131 324 Undeclared identifier 'test' in expression.
см. ранее написанное мною:
ARV писал(а):файлы *.h - это заголовочные файлы, в них перечисляются только описания (т.е. прототипы) функций соответствующего исходника
вы должны:
1. для "второго исходника" с функцией test создать соответствующий заголовочный файл, например, test.h
2. в этом заголовочнике вы должны описать прототип своей функции test()
3. создать проект, куда добавить оба исходника (это уже вы сделали)
4. в "первом" исходнике (с main()) в начале приинкюдить заголовочник test.h - так вы подскажете компилятору, что при компиляции первого исходника функцию test следует искать во втором исходнике.

все, что я описал - азы языка Си. пожалуйста, ознакомьтесь с ними!

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 09:22:14
ds3ds3
ARV спасибо за помощь. Этот вопрос исчерпан.
Вот эта страничка из хелпа меня смутила, тут 3 си файла, каким же образом используются 2 неосновных?
Изображение

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 10:07:11
alex_
А ты не пробовал открывать эти файлы?, когда откроешь сразу многое станет понятно :)

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 10:51:07
ARV
ds3ds3 писал(а):3 си файла, каким же образом используются 2 неосновных?
и снова вынужден повторить
ARV писал(а):все, что я описал - азы языка Си. пожалуйста, ознакомьтесь с ними!

Re: вопрос по mikroc

Добавлено: Вт авг 02, 2016 13:49:58
alex_
Вот краткое содержание файла mikroe_bmp.c

Код: Выделить всё

unsigned char const mikroE_240x64_bmp[1920] = {
 255,255,255,255,255,255,255,255,
...............
   6, 31,  7,134, 24, 33,252, 15,
...............
 255,255,255,255,255,255,255,255
};
Хотя по названию можно было догадаться :tea:
Другой фаил аналогичен этому.

Re: вопрос по mikroc

Добавлено: Ср авг 03, 2016 13:13:56
dosikus
alex_, вам надо что то менять в своих заблуждениях. Наверное все таки заняться изучением языка.
В хэдерах не может быть сущностей ...

Re: вопрос по mikroc

Добавлено: Ср авг 03, 2016 14:50:54
alex_
dosikus, я не совсем понял ход вашей мысли :dont_know:
По поводу приведённого примера в предыдущем сообщении, это не моя фантазия, всё взято из папки примеров mikroC.

Re: вопрос по mikroc

Добавлено: Ср авг 03, 2016 15:06:01
dosikus
Я не о примере. Речь о вашем , что хэдеры могут содержать переменные и тело функций.

Re: вопрос по mikroc

Добавлено: Ср авг 03, 2016 20:14:41
alex_
Ну и почему в хэдере не описать переменные(массивы, структуры), особенно их дофига?, вообще то это удобно, а компилятору это пофигу он всё равно прочитает по порядку, и сделает усё как надо.
К тому же большого размера константы(рисунки для граф LCD) никто в основной фаил не пихает, листать устанешь.
А по поводу тела функции в хэдере, а почему бы нет, такие вещь называются собственными либами, многие пишут.

Re: вопрос по mikroc

Добавлено: Чт авг 04, 2016 13:05:47
dosikus
У вас совершенно неверное представление о структуре проекта...

Re: вопрос по mikroc

Добавлено: Чт авг 04, 2016 13:53:30
alex_
Каждый может сказать, что у тебя не правильно, а где аргументы, с примерами?