いきなり専門用語です。

プリプロセッサとは…僕も説明しろと言われると困るのですが、簡単に言うと…簡単に言えません。
適当に言うと、プログラムの本文をコンパイルする前に先にコンパイルされて、プログラム全体に影響する特殊能力みたいなものを持っています。

Amalgamでは#include, #define, #ifdefを使っており、次の効果があります。
 
#include
指定したテキストファイルの内容をそのまんまそこにコピペします。
これでセンサーの設定や絶対に変更を加えない部分をまとめる事が出来ます。
僕等の場合、距離センサー(通称DIST)の設定に使っています。
元が何百行もあってしかも意味不明な文字の羅列なのでちょうどいいです。

#define
確実に一番多く使っています。
どんな事が出来るかというと、「定数」を作る事が出来ます。
例えば「
#define A 10」と打てば、Aと言う入れ物に10という数字が入り、プログラム内での変更は出来ません。
センサーの閾値など、数値を固定したいときに便利です。
また、便利な事に数値だけでなくテキストも 入れる事が出来、例えば「
#define SET_I2C_S1 SetSensorLowspeed(IN_1)」と打ち込み、その後SET_I2C_S1と命令すればSetSensorLowspeed(IN_1)と命令したのと同じになります。凄く便利です。これのおかげでプログラムが解りやすくなります。
この「
#define」は応用性が非常に高く、他にも使い方がたくさんあります。

因にこれ、全関数・タスク内で有効になるのでその点でも便利です。 

#ifdef
一種のスイッチのような物で、ON/OFFを切り替える事で、プログラム本文の指定した場所をコンパイルしな事が可能です。
様々な状況を想定し、それに対応したプログラムを作った時の使い分けに便利です。

他にも#ifndef, #endif, #if, #elif, #undef, ##, #line, #error, #pragmaがあります。
はっきり言って用途が解りませんが調べれば簡単に解ると思います。

で、Amalgamではこのプリプロセッサだけで50行使っていますが、人によっては200行あったりプログラムの半分がこれだったりと、いろいろです。
もちろん全く使ってない人もいます。

ではでは