Beispiel: Die Klasse (Bibliothek) verwendet ein Array der standardmäßigen festen Größe. Sagen wir 64 Bytes. Im Programm benötigen Sie jedoch eine größere Größe, beispielsweise 128 Byte. Was wäre der beste Ansatz, wenn Sie die Bibliothek nicht jedes Mal neu schreiben möchten?Definieren Array-Größe in Bibliothek, ohne es für jede neue Verwendung zu ändern?
Ich habe versucht, diese falschen Code, indem Sie demonstrieren (mit #ifndef
#define
):
// myClass.h *****************************************
#ifndef myClass_h
#define myClass_h
#ifndef EXAMLPE
#define EXAMLPE 64
#endif
class myClass{
...
private:
byte myArray[EXAMLPE]; // Use EXAMLPE to allocate array
}
#endif
// Program.ino ***************************************
// Override the default value without modifying the library
#define EXAMLPE 128
#include "myClass.h"
// this does not work because of different scope, says compiler
EDIT: Ich möchte feste Größe Array machen, wie es einfach ist, und es wird als gute Praxis auf 2 kb RAM betrachtet Plattform
EDIT 2: Ich verstehe nicht die ganze Argumentation in den Kommentar und auch warum meine Frage nicht bewertet wird. Ich bin natürlich kein großartiger Programmierer, ich weiß nichts über Vektoren oder Vorlagen, und darum bitte ich um Hilfe.
Ich bin auf der Suche nach einer Methode, wie Sie feste Größe Array in der Bibliothek aus Hauptcode in der Kompilierzeit festlegen.
Und schließlich: Weiß jemand, warum ich EXAMPLE was not declared in this scope
kompilieren erhalten Fehler, wenn ich #ifndef Beispiel löschen ... # endif Linien aus Header? Ist es nicht so, dass es unabhängig vom Umfang ist?
Es gibt keine "Scope" wenn Includes beteiligt sind; Sie werden wörtlich zur Quelle hinzugefügt. –
Verwenden Sie einen 'std :: vector'? – GManNickG
oder Vorlage die Klasse mit der Größe. – Jarod42