Вопрос о включении операторов и деталей в файл 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++. Я совершенно новичок в этом.

, 👍1

Обсуждение

почему два отрицательных голоса по этому поводу недавно? И через 3 месяца..., @wgwz


2 ответа


1

Означает ли #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


0

Я думаю, что спустя столько времени вы, возможно, нашли ответы на свой вопрос.

Но чтобы добавить некоторую информацию в эту тему на случай, если кто-нибудь откроет этот вопрос.

Означает ли #include, что это стандартная библиотека? либо из avr-g++, либо из avr-gcc? В отличие от стандартного g++ или gcc компилятор?

Да, то, что включено в avr/, связано со стандартными библиотеками avr, которые также находятся в стандартных компиляторах avr.

И последний вопрос: как Arduino.h может быть без Arduino.c?

Потому что, как ответил г-н @Ignacio Vazquez-Abrams, нет никаких обязательств по подключению файла заголовка для чего-либо еще. Вы можете написать несколько файлов заголовков и использовать их для одного исходного файла.

,