Ich würde gerne wissen, wie ein Element eines Bit-Array in eine Funktion in C-Sprache übergeben. Ich möchte die Funktionsausführung durch dieses "logische" Signal steuern. Meine Idee ist, dass einige Funktion dedicated Element eines Bit-Arrays setzt oder löscht und diese Aktion das Verhalten meiner Funktion ändert, aber ich weiß nicht, wie ich den Funktionsprototyp deklariere (ich kann nicht sagen, welchen Compiler die Funktion erwartet) Bit-Array-Element als eines seiner Argumente). Gibt es jemals einen Trick, wie man einzelne Bit-Array-Elemente in einer C-Sprachenfunktion verwendet? Vielen Dank für Anregungen.Wie Element des Bit-Arrays in Funktion übergeben werden C
0
A
Antwort
0
Es klingt wie Sie suchen nach einer generischen Lösung mit Funktionszeigern. Das heißt, einen Funktionszeiger übergeben, der die durchzuführende Aktion bestimmt. Beispiel:
void bit_change (uint8_t* arr,
size_t byte_index,
size_t bit_index,
action_t* action)
{
arr[byte_index] = action(arr[byte_index], bit_index);
}
Wo action_t
den Funktionstyp ist, das Verhalten zu bestimmen. Jetzt können Sie implementieren Aktionen wie Bit setzt, löscht Bit, schaltet das Bit, setzen alle Bits etc etc.
Voll Beispiel:
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
typedef uint8_t action_t (uint8_t data, size_t bit);
uint8_t bit_set (uint8_t data, size_t bit)
{
return (uint8_t) (data | (1u << bit));
}
uint8_t bit_clear (uint8_t data, size_t bit)
{
return (uint8_t) (data & ~(1u << bit));
}
void bit_change (uint8_t* arr,
size_t byte_index,
size_t bit_index,
action_t* action)
{
arr[byte_index] = action(arr[byte_index], bit_index);
}
void print_array (size_t size, const uint8_t array[size])
{
for(size_t i=0; i<size; i++)
{
printf("%.2"PRIu8 " ", array[i]);
}
printf("\n");
}
int main (void)
{
uint8_t array [5] = {0};
bit_change(array, 0, 2, bit_set);
print_array(sizeof(array), array);
bit_change(array, 0, 2, bit_clear);
print_array(sizeof(array), array);
return 0;
}
Verwandte Themen
- 1. Nur ein Element des Arrays wird in Funktion übergeben. C++
- 2. Stimmt etwas mit BitArrays in C# nicht?
- 3. Wie DOM-Element an Aurelia-Funktion übergeben?
- 4. übergeben Array-Element Zeiger in c
- 5. Übergeben von Arrays zur Funktion in C++
- 6. C# übergeben Funktion als Argument
- 7. C++ 11 Lambda-Funktion - wie Parameter übergeben
- 8. Wie ein Element in Crawler jede Funktion übergeben?
- 9. Übergeben von Zeigern zur Funktion in C
- 10. , wie Suchparameter in URL des Codeigniter übergeben werden
- 11. wie Argumente innerhalb einer Funktion in r übergeben werden
- 12. C++: Übergeben Sie einen Vektor des Elementfunktionszeigers an eine Funktion
- 13. Wie in Funktion Schleifen multidimentional Array übergeben
- 14. C++ übergeben Variablentyp an Funktion
- 15. C: Funktion übergeben Array Eingang
- 16. Wie übergeben Sie die Vektorzelle an eine Funktion in C++?
- 17. Wie alle in einem Array gespeicherten Werte angezeigt werden und wie diese Werte an eine zweite Funktion übergeben werden. {C}
- 18. auf x86 Wie Doppel an eine Funktion übergeben werden
- 19. Wie binäre Funktion an Template-Funktion übergeben C++
- 20. Wie Argumente in eine cppFunction übergeben werden
- 21. Übergeben eines Array von Strukturen in C++ - Strukturelemente existieren nicht in der aufgerufenen Funktion, wie Vektoren richtig übergeben werden?
- 22. Kann ein "Typ" in C++ übergeben werden?
- 23. Was sind einige gebräuchliche Anwendungen für Bitarrays?
- 24. Werden Inline-Funktionen als Argument übergeben, wirklich inline in C/C++ ausgeführt?
- 25. Wie übergeben ENUM als Funktion Argument in C
- 26. Wie würde ich eine Funktion als Parameter in C++ übergeben
- 27. C++ - Objektinstanz an Python-Funktion übergeben
- 28. Übergeben des Ereignisses vom übergeordneten zum untergeordneten Element (Polymer)
- 29. Wie übergeben Sie jedes Element in einer Liste als Argumente einer anderen Funktion in R?
- 30. Übergeben des Strukturwerts an eine Funktion
eine Reihe von 'foo' in einer Funktion zu nutzen, können Sie immer rufe 'my_function (foo * my_foo)' 'auf und erstelle oder setze' my_foo [x] 'im Körper deiner Funktion. –
Wie viele Bits in Ihrem Bit-Array? – technosaurus
Sie können kein einzelnes "Element eines Bit-Arrays" übergeben, da dies ein bisschen wäre. Sie können eine Ganzzahl übergeben. Wenn in einer Ganzzahl mehr Bits enthalten sind als passen, können Sie einen Zeiger auf das Integer-Array übergeben. Die Funktion sollte die Decodierung der Bits ("die Logik") durchführen. –