Базовый заголовок (#include)

Идея использования базового заголовочного файла базируется на той особенности программного обеспечения Arduino, которая заключается в использовании для компиляции скетчей компилятора языка Си. Поскольку есть Си, то есть и возможность использовать в своих скетчах и собственные макроопределения (#define), например печально известное:

#define TRUE FALSE

Но при этом возникает вопрос, где же разместить этот заголовочный файл, этот <my_arduino_defs.h>?

Оказывается, его несложно разместить в директории, в котором Arduino IDE хранит директории со скетчами, а в код скетча включать, добавляя в начало PDE-файла (начиная с версии 1.0 используются файлы с расширением INO) строку

#include "../my_arduino_defs.h"

Вопрос лишь, будет ли это работать. В Arduino IDE версии 1.0 (Ubuntu 12.04) не работает, так что для тех, кто желает проверить работоспособность идеи, прилагаю набор тестовых скетчей. Файлы из архива следует распаковать в рабочую папку sketchbook. После этого надо переместить файл my_arduino_defs.h из директория sketchbook/tmp в директорий sketchbook.

Тем не менее, в Linux есть несколько рискованный (с точки зрения целостности данных) способ решить эту проблему. Файл my_arduino_defs.h следует разместить в директории /tmp -- тогда при компиляции компилятор его найдёт, поскольку сама компиляция выполняется в директории /tmp/build*МНОГО*ЦИФР*.tmp. Насколько мне известно, в Windows есть переменная окружения %TEMP (или %TMP?), возможно, что компилятор производит компиляцию сходным образом.

Но оболочка shell системы Linux позволяет использовать вместо файла /tmp/my_arduino_defs.h символьную ссылку /tmp/my_arduino_defs.h, разместив оригинал файла где-нибудь в более безопасном от случайного удаления месте, ведь файлы в директории /tmp являются как бы временными, и теоретически все их можно безопасно удалить при очередной загрузке системы. В этом файл /tmp/my_arduino_defs.h получается как бы квази-временным файлом, который как бы не нужно удалять -- в общем неподходящее место для его размещения, директорий /tmp. А символьную ссылку можно удалить совершенно безопасно, а при загрузке системы создавать её, прописав соответствующую команду в ~/.profile.