вопрос по mikroc
- Сообщения: 37
- Зарегистрирован: Ср ноя 21, 2012 02:55:37
Здравствуйте! Подскажите, что нужно сделать чтобы использовать несколько исходников. Версия pro for pic 4.60 без лимита. Если добавить второй исходник (через меню проект - добавить новый файл), то его содержимое нельзя использовать в первом. А хотелось бы во второй сваливать все написанные функции, объявленные переменные, константы, дефайны, чтобы не мешались в основном исходнике. Заранее спасибо!
- Реклама
я не знаю нюансов вашего mikroc, но желание ваше до добра не доведет. может быть, вы разберетесь все-таки, как правильно проект создать?ds3ds3 писал(а):А хотелось бы во второй сваливать все написанные функции, объявленные переменные, константы, дефайны, чтобы не мешались в основном исходнике.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
ds3ds3, во первых создай свой проект, не надо пихать в тестовый, во вторых если нужные функции в другом файле просто инклудишь этот фаил.
- Сообщения: 37
- Зарегистрирован: Ср ноя 21, 2012 02:55:37
А я всегда думал, что функции должны быть в отдельном исходнике, а в основном - их вызовы, дабы избежать каши и постоянной прокрутки вверх-вниз. Ну да ладно, допустим все программы пишут километровой простыней в один исходник. Вопрос звучит так: как правильно подключить второй исходник, чтобы он работал?ARV писал(а):я не знаю нюансов вашего mikroc, но желание ваше до добра не доведет. может быть, вы разберетесь все-таки, как правильно проект создать?ds3ds3 писал(а):А хотелось бы во второй сваливать все написанные функции, объявленные переменные, константы, дефайны, чтобы не мешались в основном исходнике.
Дальше: я не использую тестовый проект; а инклуд вызывает ошибку, т.к.:
В хелпе написано что инклуд используется для заголовочных файлов (.h). А для файлов проекта (.с) нужно использовать меню проект - добавить файл к проекту. Я так сделал - не работает. Может у того кто работал в микрос это получилось? К ним я и обращаюсь. Заранее спасибо.
я думаю, ваш компилятор все-таки соответствует общепринятым правилам создания и работы с проектами, поэтому выскажу свое мнение, как следует поступать.
во-первых, файлы *.h - это заголовочные файлы, в них перечисляются только описания (т.е. прототипы) функций соответствующего исходника, а так же необходимые константы, макросы и, иногда, переменные.
во-вторых, проект состоит обычно из простого перечисления файлов с исходными текстами, т.е. *.c. заголовочные файлы в состав проекта не включаются, т.к. сами по себе без исходников не представляют для компилятора ничего интересного, а используются благодаря директивам include в исходниках.
в-третьих, чтобы вам могли помочь, надо давать больше информации: скриншоты, копии сообщений об ошибках, сами исходники и т.п., ибо гадать, что именно вы делаете не так, как надо, никому не интересно.
во-первых, файлы *.h - это заголовочные файлы, в них перечисляются только описания (т.е. прототипы) функций соответствующего исходника, а так же необходимые константы, макросы и, иногда, переменные.
во-вторых, проект состоит обычно из простого перечисления файлов с исходными текстами, т.е. *.c. заголовочные файлы в состав проекта не включаются, т.к. сами по себе без исходников не представляют для компилятора ничего интересного, а используются благодаря директивам include в исходниках.
в-третьих, чтобы вам могли помочь, надо давать больше информации: скриншоты, копии сообщений об ошибках, сами исходники и т.п., ибо гадать, что именно вы делаете не так, как надо, никому не интересно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
Два исходника в один проект запихать не получиться void main() должен быть один на весть проект, в подключаемом файле могут находиться описание переменных, констант функций и сами функции, чтобы не писать всё это в основное тело программы. Я предпочитаю выносить все описания в фаил а сами функции под тело main. По поводу расширения подключаемых файлов - не важно какое оно будет, главное чтобы название файла и расширение совпадали например фаил funkcii.txt подключаем его #include "funkcii.txt" компилирует без вопросов если нет ошибок в синтаксисе.
не важно для компилятора, но важно для программиста. не надо делать так, как не надо делать.alex_ писал(а):По поводу расширения подключаемых файлов - не важно какое оно будет
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Товарищ спрашивал о том что не компилирует потому что не то расширение, вот я и ответил что компилятору всё равно, лишь бы имена совпадали, остальное дело этики, хотя по старике используют Н расширение, но по сути можно написать любое
- Сообщения: 37
- Зарегистрирован: Ср ноя 21, 2012 02:55:37
Я не говорил что нужно определенное расширение, я сказал что в микрос #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.
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.
см. ранее написанное мною: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 следует искать во втором исходнике.
все, что я описал - азы языка Си. пожалуйста, ознакомьтесь с ними!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 37
- Зарегистрирован: Ср ноя 21, 2012 02:55:37
А ты не пробовал открывать эти файлы?, когда откроешь сразу многое станет понятно 
и снова вынужден повторитьds3ds3 писал(а):3 си файла, каким же образом используются 2 неосновных?
ARV писал(а):все, что я описал - азы языка Си. пожалуйста, ознакомьтесь с ними!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Вот краткое содержание файла 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
};
Другой фаил аналогичен этому.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
alex_, вам надо что то менять в своих заблуждениях. Наверное все таки заняться изучением языка.
В хэдерах не может быть сущностей ...
В хэдерах не может быть сущностей ...
dosikus, я не совсем понял ход вашей мысли
По поводу приведённого примера в предыдущем сообщении, это не моя фантазия, всё взято из папки примеров mikroC.
По поводу приведённого примера в предыдущем сообщении, это не моя фантазия, всё взято из папки примеров mikroC.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Я не о примере. Речь о вашем , что хэдеры могут содержать переменные и тело функций.
Ну и почему в хэдере не описать переменные(массивы, структуры), особенно их дофига?, вообще то это удобно, а компилятору это пофигу он всё равно прочитает по порядку, и сделает усё как надо.
К тому же большого размера константы(рисунки для граф LCD) никто в основной фаил не пихает, листать устанешь.
А по поводу тела функции в хэдере, а почему бы нет, такие вещь называются собственными либами, многие пишут.
К тому же большого размера константы(рисунки для граф LCD) никто в основной фаил не пихает, листать устанешь.
А по поводу тела функции в хэдере, а почему бы нет, такие вещь называются собственными либами, многие пишут.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01



