Как поместить в скетч фрагмиент кода из файла?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Возникла идея разместить фрагмент кода программы в отдельном файле. Фрагмент не является функционально законченным программным блоком.

Если помещаю его в файл с расширением *.c, IDE пытается его откомпилировать независимо от других, что, естественно, приводит к неудаче.

Если расширение файла *.frm, IDE его не видит и с негодованием сообщает, что такого файла в природе не существует.

Как добиться желаемого?

nik182
Offline
Зарегистрирован: 04.05.2015

А что #include "path\file.ext" не работает? Именно в том месте программы где надо вставить файл. У меня работает.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Расширение .h

nik182
Offline
Зарегистрирован: 04.05.2015

Совсем не обязательно. Расширение может быть любым. Вставляется файл так, как будто всё что в файле есть = написано в том файле в который вставляют. Поэтому можно вставлять даже без расширения. Обычно в начале си файлов идут включения .h файлов. Но это не значит, что .h это обязательное расширение. Директива #include может быть использована в любой части файла. Даже самой последней. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да никто и не говорит, что обязательно. Просто так "принято". Все редакторы это понимают. Кликнешь, какя-нибудь вижуал-студия откроет, синтаксис подсветит - просто удобно.

А насчёт "должно быть любым" Вы погорячились. C и CPP IDE вставляет в make как самостоятельные файлы не спрашивая Вас хотите Вы этого или нет. Так что уже не любым.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

ЕвгенийП пишет:

Расширение .h

latest?cb=20121205194057

nik182
Offline
Зарегистрирован: 04.05.2015

ЕвгенийП пишет:

Да никто и не говорит, что обязательно. Просто так "принято". Все редакторы это понимают. Кликнешь, какя-нибудь вижуал-студия откроет, синтаксис подсветит - просто удобно.

А насчёт "должно быть любым" Вы погорячились. C и CPP IDE вставляет в make как самостоятельные файлы не спрашивая Вас хотите Вы этого или нет. Так что уже не любым.

Простите, а гда я использовал безусловную форму "должен"? Ещё раз. #incude вставляет в файл текст (или не текст, но тогда проблемы:-) любобо файла. К make это не имеет никакого отношения. А вставляют только те файлы,которые вы включили в проект. Приведите пример, где без вашего спроса что вставлено.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Это описка, простите. У Вас "может быть любым", но Вы погорячились - на самом деле в Ардуино IDE не может. С и CPP автоматом вставляются в make и если они не могут быть откомпилированы как самостоятельные файлы - возникнет ошибка. Вот и всё, что я хотел уточнить.

nik182
Offline
Зарегистрирован: 04.05.2015

Поясните, что не будет откомпилировано?

Почему у меня кусок

void printu(uint16_t u){
  byte d[4];
 for(byte i = 0; i<4; i++){d[i]= u%10 + 0x30 ; u/=10;};
#include"c:\Users\Toshiba\Documents\Arduino\sketch_sep10b\1.d"
 
, где файл 1.d :
 uart_send_byte(d[3]);
 uart_send_byte(d[2]);
 uart_send_byte(d[1]);
 uart_send_byte(d[0]);
 
компилируется в ARDUINO IDE ?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы читать умеете? Нельзя делать .c и .cpp потому. что ide их вставляет в make.

Если Вы этого не знали, то (предваряя Ваш новый вопрос) уточню ещё. Речь идет о файлах .c и .cpp расположенных в том же фолдере, что и скетч. Как только IDE в этом фолдере что-то (.c и .cpp) видит - онда добавляет это в make. Попробуйте.

nik182
Offline
Зарегистрирован: 04.05.2015

Ну тогда сдаюсь. Я отвечал на вопрос топик стартера - как вставить фрагмент текста из отдельного файла. Привел пример что это работает.  Читать я умею :-)  Я хотел услышать, что .с и .срр должны лежать в той же папке. Если вы положите их отдельно и сделаете #include c полным путём, то никаких проблем не будет. Всё вcтавится и откомпилируется. Так что и Вы не правы - можно,но лежать они должны отдельно. Например в папке COMMON.  

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Это да. А вот за то, что они разработчики IDE не позволяют мне самому делать проект (make) а пихают туда всё, что ни попадя, я бы этим ... нехорошим людям руки поотрывал бы, козлам.

nik182
Offline
Зарегистрирован: 04.05.2015

Да ладно. Я давно с этим смирился. И чисто из вредности все проекты делаю с пустым SETUP  и while(1) {} в LOOP.