私は現在、マイクロコントローラ用の組み込み C を使用していますが、文字が 1 つだけ異なるペリフェラルがいくつかある場合があります (たとえば、UARTA、UARTB など)。各ペリフェラルのコードは、他の点では同一のレジスタの文字を除いて、多くの場合同一です。たとえば、周辺 AI をセットアップするには、次のようにします。
UCA2CTL1 |= UCSWRST; // Put state machine in reset
UCA2CTL0 |= UCSYNC+UCCKPL+UCMSB; // 3-pin, 8-bit SPI slave
// Continue initializing peripheral registers with "A" in name
また、ペリフェラル BI をセットアップするには、レジスタ名が 1 文字だけ置き換えられていることを除いて、まったく同じコードを使用します。
UCB2CTL1 |= UCSWRST; // Put state machine in reset
UCB2CTL0 |= UCSYNC+UCCKPL+UCMSB; // 3-pin, 8-bit SPI slave
// Continue initializing peripheral registers with "B" in name
#ifdef/コードのコピー/貼り付けや検索/置換を行わなくても、ターゲットとする周辺機器を変更できるようにしたいと考えています。この動作を実装できるコンパイラ ディレクティブまたは巧妙なトリックがあり、コードを 1 回だけ記述する必要がありますか? 周辺機器の最後の文字を #define したいのですが、そのようなものはコードの悪臭に危険なほど近づきそうです。