Почему я не могу включить файлы .h, если код arduino уже находится в c?
avr/io.h
является частью avr-lib c, который должен быть частью каждого avr-g cc / avr-g ++ дистрибутива. В частности, пути, к которым относится такая система, встроены в avr-g cc, и там не должно быть , поэтому нет необходимости использовать -I path
или -isystem path
для указания на системные заголовки. , Для дальнейшего изучения вы можете использовать тот же вызов avr-gcc
, но с добавленной опцией -v
. По умолчанию будут напечатаны включаемые пути, такие как:
[...]
#include "..." search starts here:
#include <...> search starts here:
<install-path>/lib/gcc/avr/8.3.1/include
<install-path>/lib/gcc/avr/8.3.1/include-fixed
<install-path>/lib/gcc/avr/8.3.1/../../../../avr/include
End of search list.
[...]
* * * * * * * В последнем пути ..
означает «на один уровень вверх», то есть третий путь фактически равен <install-path>/avr/include
. Этот последний путь (в моем примере) - это место, где будут расположены заголовки из avr-lib c, такие как avr/io.h
и math.h
, поэтому в рабочей установке будет файл <install-path>/avr/include/avr/io.h
. 1-й путь предоставляет заголовки, поступающие от самого avr-g cc, например stdarg.h
.