Вопрос о включении операторов и деталей в файл Arduino.h из основной библиотеки
Это больше вопрос по C/C++. Однако файлы, о которых я спрашиваю, являются частью библиотеки Arduino.
В /arduino-1.6.5-r5/hardware/arduino/avr/cores/arduino/Arduino.h :
#ifndef Arduino_h
#define Arduino_h
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <math.h>
#include <avr/pgmspace.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "binary.h"
#ifdef __cplusplus
extern "C"{
#endif
Как эти блоки находятся во время компиляции в основном скетче?
#include <avr/pgmspace.h>
#include <avr/io.h>
#include <avr/interrupt.h>
Означает ли #include <avr/somelibrary.h>
, что это стандартная библиотека из avr-g++ или avr-gcc? В отличие от стандартного компилятора g++ или gcc?
И последний вопрос: как может быть Arduino.h без Arduino.c? Я просмотрел проект, но не смог найти Arduino.c. Все это, вероятно, глупые вопросы, так как я изучаю C/C++. Я совершенно новичок в этом.
@wgwz, 👍1
Обсуждение2 ответа
Означает ли
#include <avr/somelibrary.h>
, что это стандартная библиотека из avr-g++ или avr-gcc? В отличие от стандартного компилятора g++ или gcc?
Нет. Это просто означает, что компилятор должен проверять как свои встроенные пути включения, так и пути, переданные с помощью параметра командной строки -I
(или его локального эквивалента) для файла с именем "avr/somelibrary.h". ". То, что AVR GCC знает, где находится AVR Libc, не имеет значения.
И последний вопрос: как может быть Arduino.h без Arduino.c?
Нет никаких обязательств по сопоставлению каждого файла заголовка с файлом .c/.cc/.cpp или наоборот.
Таким образом, сигнатуры функций в *Arduino.h* определяются библиотеками, на которые ссылаются, с помощью операторов включения, показанных в OP?, @wgwz
На заголовки ссылаются, да., @Ignacio Vazquez-Abrams
Предположим, что есть включение в включение, так сказать. Подхватит ли заголовочный файл функции второго уровня?, @wgwz
Означает ли avr/someLibrary.h, что someLibrary.h содержится в каталоге с именем avr?, @wgwz
@skywalker: Это правильно., @Ignacio Vazquez-Abrams
Возможно, нет необходимости сопоставлять файл заголовка с файлом .c/.cc/.cpp, но функции должны существовать где-то, когда вы их вызываете., @haresfur
Я думаю, что спустя столько времени вы, возможно, нашли ответы на свой вопрос.
Но чтобы добавить некоторую информацию в эту тему на случай, если кто-нибудь откроет этот вопрос.
Означает ли #include, что это стандартная библиотека? либо из avr-g++, либо из avr-gcc? В отличие от стандартного g++ или gcc компилятор?
Да, то, что включено в avr/
, связано со стандартными библиотеками avr, которые также находятся в стандартных компиляторах avr.
И последний вопрос: как Arduino.h может быть без Arduino.c?
Потому что, как ответил г-н @Ignacio Vazquez-Abrams, нет никаких обязательств по подключению файла заголовка для чего-либо еще. Вы можете написать несколько файлов заголовков и использовать их для одного исходного файла.
- Где параметры avrdude определяются в Arduino IDE?
- Как писать скетчи, совместимые с makefile?
- Использование платы Arduino для программирования AVR
- Проблема с загрузкой прошивки платы Melzi 2.0
- UECIDE: ошибка компоновщика с библиотекой U8g2
- Есть ли константа препроцессора для размера памяти
- Запуск кода Arduino для Bluefruit LE на чистом ATMega328
- Конечный автомат C++ / Wpmf-конверсия
почему два отрицательных голоса по этому поводу недавно? И через 3 месяца..., @wgwz