Ich werde eine einfache Bibliothek (A-Datei) in IAR Workbench für STM8 erstellen. In dieser Bibliothek möchte ich sowohl Hardware-SPI als auch Software-SPI für Benutzer zur Auswahl implementieren.IAR Build-Bibliothek mit anderen #define
In meinem library.c, schrieb ich:
#include "library.h"
void LibraryInit()
{
#ifdef HARDWARE_SPI
funcToInitHardwareSPI();
#else
funcToInitSoftwareSPI();
#endif
}
Und in meinem library.h, schrieb ich:
#ifndef __LIB_H
#define __LIB_H
#define HARDWARE_SPI
void LibraryInit();
#endif
Dann denke ich, wenn der Benutzer #define HARDWARE_SPI
im Projektziel definieren, die Bibliothek wird Hardware-SPI-Teil ausführen. Wenn nicht, sollte Software-SPI verwendet werden.
Aber nachdem ich das Projekt erstellt und library.a und library.h in das Testprojekt aufgenommen habe, wobei library.h keine #define HARDWARE_SPI
hat, geht die Routine noch in den Hardware-SPI-Teil über. Wie kann ich die library.a bauen, die Benutzer die Funktion wählen lassen kann, indem er #define
in die Header-Datei schreibt?
Nicht verwandt mit Ihrer Frage, aber verwenden Sie keine Symbole mit zwei führenden Unterstrichen oder einem führenden Unterstrich, gefolgt von einem Großbuchstaben. Diese Symbole sind in allen Bereichen für den Compiler und die Standardbibliothek reserviert. –
@Someprogrammerdude Hast du! Danke, dass du mir etwas Grundlegendes beigebracht hast! – SoWaiSam