STAR8のIAR Workbenchに簡単なライブラリ(.aファイル)を作成します。このライブラリでは、ユーザーが選択できるようにハードウェアSPIとソフトウェアSPIの両方を実装したいと考えています。異なる#defineを持つIARビルドライブラリ
#include "library.h"
void LibraryInit()
{
#ifdef HARDWARE_SPI
funcToInitHardwareSPI();
#else
funcToInitSoftwareSPI();
#endif
}
をそして、私のlibrary.hに、私が書いた:私のlibrary.cで
は、私が書いた後、ユーザーがターゲットプロジェクトで#define HARDWARE_SPI
を定義する場合、私は、考えて
#ifndef __LIB_H
#define __LIB_H
#define HARDWARE_SPI
void LibraryInit();
#endif
ライブラリはハードウェアSPI部分を実行します。そうでない場合は、ソフトウェアSPIを使用する必要があります。
しかし、プロジェクトをビルドしてlibrary.aとlibrary.hをテストプロジェクトに追加した後、library.hには#define HARDWARE_SPI
がなく、ルーチンはまだハードウェアSPIの部分に入ります。ライブラリファイル#define
をヘッダファイルに書き込んで、ユーザが関数を選択できるようにするには、どうすればlibrary.aをビルドできますか?
質問には関係ありませんが、2つの先頭のアンダースコア、先頭の1つのアンダースコア、大文字の先頭の記号は使用しないでください。これらのシンボルは、コンパイラおよび標準ライブラリのすべてのスコープで予約されています。 –
@Someprogrammerdudeあなたがいました!基本的なことを教えてくれてありがとう! – SoWaiSam