Вопрос по #include
- Войдите на сайт для отправки комментариев
Сб, 15/02/2020 - 21:54
Не понятно как работает директива #include в среде ARDUINO !!
По описанию языка Си, директива #include просто вставляет текстовый файл с текущий файл.
Но в среде ARDUINO это не получается.
Как только у включаемого файла будет расширение отличное от "*.h" - среда сообщает (пример "pr.hhh")
= файла нет = типа = probs:28:21: error: pr.hhh: No such file or directory
Как только у файла делаю расширение "*.h" = все компилируется нормально.
Почему ???
Вот простой пример содержимого включаемого файла =
pr.h
Serial.println(" RERERERE ** !! ");
и сама программа куда он включается для пробы
byte bt;
void loop()
{
while (Serial.available()==0) {}
bt=Serial.read();
#include "pr.h"
}
Что это за особенности среды ардуино и где это описано, прошу помочь разобраться.
Добавлю. Не точно описал.
Расширение одинаковые "h" или "hhh" как в описание include так и в самом включаемом файле.
В среде полно дурацких модификаций языка и это нигде не написано. Хочешь чего-то отличающегося от детской игрушки - используй другую среду.
Вот простой пример содержимого включаемого файла =
pr.h
Ну, нечестный же, чё?
Ну, нечестный же, чё?
Ступил, а так?
Вот простой пример содержимого включаемого файла =
byte bt;
void loop() { while (Serial.available()==0) {} bt=Serial.read(); #include "pr.h" }В 5-й строке
Wasq, а чем вас не устраивают файлы .h?
С чего вы взяли , что в include можно вставлять файлы с произвольными расширениями?
Думаю вам стоит почитать как используются директивы include в стандартном С, вы очень мало в этом понимаете
Два замечания.
Для блюпил компилируется и .h и .hhh
Для наны компилируется с .hhh если в кавычках указать файл с полным путём. Так что расширение может быть любым.
Ок.Спасибо nik182 !!
Указал полный путь и свершилось чудо ! Среда ест файл с любым расширением и без оного !!
Без полного пути среда есть только с расширением "*.h", хотя он в каталоге исходного файла
Зачем это надо мне - другой вопрос = к этому делу не относиться.
Для тех кто думает, что можно использовать только с "*.h" = приведу классическое описание #include =
Директива #include
Директива #include позволяет включать в текст программы указанный файл. Если файл является стандартной библиотекой и находится в папке компилятора, он заключается в угловые скобки <>.
Если файл находится в текущем каталоге проекта, он указывается в кавычках "". Для файла, находящегося в другом каталоге необходимо в кавычках указать полный путь.
#include "func.c"
Нет конечно не только *.h. Но то Си, а не виринг. В ардуине пробуйте *.inc, когда-то с ним работало.
Ну а это , просто что бы было.
/**/ #include "pitches.h" struct mld_t { int note; int time; }; mld_t melody[] = { #include "melody.h" //<-- внимание }; void setup() { for (int thisNote = 0; thisNote < 8; thisNote++) { int noteDuration = 1000 / melody[thisNote].time; tone(8, melody[thisNote].note, noteDuration); int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); noTone(8); } } void loop() { }melody.h
// песенка NOTE_C4, 4, NOTE_G3, 8, NOTE_G3, 8, NOTE_A3, 4, NOTE_G3, 4, 0, 4, NOTE_B3, 4, NOTE_C4, 4pitches.h