greggy80
Mitglied
Hallo,
ich stehe gerade etwas auf m Schlauch. Ich arbeite mit C.
Mein Anliegen: ich habe N char-Arrays, sagen wir mal 3, um es konkret zu halten. Nun möchte ich über einen globalen Index auf einen char-Wert in den 3 Arrays zugreifen und das möglichst effizient. Bis jetzt sieht meine Lösung für 3 Arrays so aus:
Diese Funktion wird jedoch sehr sehr oft aufgerufen und ich möchte die Logik möglichst kompakt und schnell berechenbar halten. Am schönsten wäre es, wenn man die if-Abfragen eliminieren könnte und den richtigen Index für das richtige Array irgendwie berechnet. Die Anzahl übergebener Arrays ist zwar beliebig, aber fest gewählt.
Ich bin mir gerad nicht sicher, ob das überhaupt möglich ist, aber wenn, dann wäre ich für ein paar Denkanstöße sehr dankbar!
Viele Grüße, David
PS: vorher die drei Arrays durch ein malloc und memcpy zusammenzuführen, möchte ich gerade vermeiden, da ich auf Sensorknoten arbeite und sowohl platzsparend als auch performant programmieren muss (ich weiß, beide Dinge gleichzeitig beißen sich gelegentlich etwas ).
ich stehe gerade etwas auf m Schlauch. Ich arbeite mit C.
Mein Anliegen: ich habe N char-Arrays, sagen wir mal 3, um es konkret zu halten. Nun möchte ich über einen globalen Index auf einen char-Wert in den 3 Arrays zugreifen und das möglichst effizient. Bis jetzt sieht meine Lösung für 3 Arrays so aus:
Code:
static char getByte(
const char baMeta[], //1st array
const int baMetaLength, //length of 1st one
const char baName[], //2nd array
const int baNameLength, //length of 2nd one
const char baNs[], //3rd array
const int baNsLength, //length of 3rd one
const int offset //Global offset which points into one of the three arrays
)
{
if (offset < baMetaLength)
return baMeta[offset];
if (offset >= baMetaLength && offset < baNameLength + baMetaLength)
return baName[offset - baMetaLength];
if (offset >= baNameLength + baMetaLength)
return baNs[offset - baNameLength - baMetaLength];
exit(1); //Fatal error - MUST NOT BE!
}
Ich bin mir gerad nicht sicher, ob das überhaupt möglich ist, aber wenn, dann wäre ich für ein paar Denkanstöße sehr dankbar!
Viele Grüße, David
PS: vorher die drei Arrays durch ein malloc und memcpy zusammenzuführen, möchte ich gerade vermeiden, da ich auf Sensorknoten arbeite und sowohl platzsparend als auch performant programmieren muss (ich weiß, beide Dinge gleichzeitig beißen sich gelegentlich etwas ).
Zuletzt bearbeitet: