-
Thread
ESP32 E-Papier-Thermometer
); } display.update(); if(METRIC) { display.drawExampleBitmap(gImage_gui, sizeof(gImage_gui), GxEPD::bm_default | GxEPD::bm_partial_update); }else { display.drawExampleBitmap(gImage_gui_f, sizeof(gImage_gui_f), GxEPD::bm_default | GxEPD::bm_partial_update); } }
-
Thread
Bitfeld zuweisen: Warum optimiert der Compiler nicht?
anderer Wert. Fragt nicht, woher ich das weiß. udok schrieb im Beitrag #6807313: > memset(&Out, 0, sizeof(Out)); Das ist ein anderes Spiel. Das ist ja wirklich implementationsabhängig.
Walter T. schrieb im Beitrag #6807320: > udok schrieb: >> memset(&Out, 0, sizeof(Out)); > > Das ist ein anderes Spiel. Das ist ja wirklich implementationsabhängig. Du kannst die Variable natürlich anders initialisieren... Warum soll das aber implementierungsabhängig sein
-
Thread
Schrittmotor mit Arduino
lcd.clear(); lcd.print("Eingabe:"); lcd.setCursor(0, 1); memset(eingabe, 0, sizeof eingabe); stelle = 0; mode = 1; } if (mode == 1 && key != '\0') { if (key != 'A' && key != 'B' && key != 'C' && key != 'D' && key != '#' && stelle < 15) { lcd.print
lcd.clear(); lcd.print("Eingabe:"); lcd.setCursor(0, 1); memset(eingabe, 0, sizeof eingabe); stelle = 0; mode = 1; } if (key == '#' && stelle > 0) { eingabe[stelle] = NULL; stelle--; lcd.setCursor(stelle,1); lcd.print(' ')
-
Artikel
Plattformunabhängige Programmierung in C
="wikitable" + Integer für besondere Zwecke Headerdatei Typ Zweck size_t Kann jedes Ergebnis des sizeof() -Operators aufnehmen. ptrdiff_t Kann jedes Ergebnis der Subtraktion zweier Zeiger aufnehmen. wchar_t Kann jedes Multibyte-Zeichen aufnehmen. intptr_t Kann den numerischen Wert jedes Zeigers aufnehmen
-
Thread
Umwandlung Wert in 4 Byte Gleitkommazahl (KNX)
8) | ((uint32_t)SensorRawData[4])); memcpy(&SCD30_CO2_Concentration, &CO2_Temp, sizeof SCD30_CO2_Concentration); [/c] Der Code setzt aus 4-Byte ein float zusammen.
-
Thread
Logische Inverse in C
0b11101, 0b11000}, { 0b11101, 0b10100} }; int check(byte in) { for (size_t i = 0; i < (sizeof(data) / sizeof(data[0])); i++) { if ((in & data[i].mask) == data[i].filter) return i; } return -1; // not found } [/code]
, > { 0b11101, 0b10100} > }; > > > int check(byte in) > { > for (size_t i = 0; i < (sizeof(data) / sizeof(data[0])); i++) > { > if ((in & data[i].mask) == data[i].filter) return i; > } > return -1; // not found > } > [/code] Was sind eigentlich Ternärvektoren? Und was
-
Thread
Hilfe nötig für vereinfachung einer c Funktion
t finalout[20]; >> for (int i = 0 > > warum wählst du int für i? Besser wäre size_t, da sizeof auch diesen Typ zurückgibt. > kann denn dein i je negativ werden? Gegenfrage: Muss es einen Bereich von mehr als 2 Milliarden abdecken können?
char input[] = "69:66:84:1A:0E:E7:E5:51:30:82:60:A7:27:F2:A5:54:56:B9:15:19"; uint8_t output[sizeof(input)/3]; assert(parsehex(sizeof(input)-1, input, output) != -1); for(size_t i=0; i<sizeof(output); i++){ if(i) printf(", "); printf("0x%.2X", output[i]); } puts(""); } [/c
-
Thread
existierenden pointer auf NULL setzen
(void** pp) { free (*pp); *pp = NULL; } int main (void) { char* str = malloc (sizeof (*str) * 128); strcpy (str, "hi, there"); puts (str); my_free ((void**)&str); // geht, da NULL free (str); free (str); free (str); return EXIT_SUCCESS; } [/c
-
Thread
Struct ins EEprom sichern
jegliche Angaben zum System. Evtl. so in der Art: uint8_t * ptr = &flags; for (i = 0; i < sizeof(flags); i++;) { eeprom_update_byte(i, *ptr); } Nur eine Vermutung…
[c] #include <avr/eeprom.h> struct { ... } flags; ... eeprom_read_block(&flags, 0, sizeof(flags)); ... eeprom_update_block(&flags, 0, sizeof(flags)); ... [/c]
-
Thread
Komisches Arduino-Phänomen mit PROGMEM und DCF77-Empfang
RTC_Zeit.day(); Flag_Tagesereignis = false; for (int i = 0; i < sizeof(Ereignis) / sizeof(event_type); i++) { // über die Tabelle loopen und Tag/Monat mit aktuellem Datum vergleichen // dann den Namen anzeigen etc. memcpy_P (&Ereignis_SRAM, &Ereignis[i], sizeof(event_type)); // zuerst einen Eintrag des PROGMEM-Arrays ins SRAM (Variablenspeicher) kopieren if (Ereignis_SRAM.Tag == RTC_Zeit.day() && Ereignis_SRAM.Monat == RTC_Zeit.month
-
Thread
zufallsabhängig eine Anzahl von Instanzen? eines Structs erstellen
Zeigern auf die Zeilen: feld = (feld_t**)malloc( mFeld*sizeof(feld_t*) ); if( !feld ) ...Fehlerbehandlung...; size_t iZeile; for( iZeile=0; iZeile<mFeld; ++iZeile ) { feld[iZeile] = (feld_t*)malloc( nFeld*sizeof(feld_t) ); if( !feld[iZeile] ) ...Fehlerbehandlung
*/ srand(time(NULL)); printf("Ein unsigned ist %d byte groß\n\n", (int)sizeof(x)); printf("Ein Pointer auf ein unsigned ist %d byte groß\n\n", (int)sizeof(p)); printf("Ein Struct vom Typ sHase ist %d byte groß\n\n", size_sHase); //ersten Platz
-
Thread
STM32F1 HAL UART Senden nicht
4+1 komme ich schon auf 5 :) Aber üblich ist es die Länge da wegzulassen und in der Ausgabe ein sizeof() zu verwenden. Auch bei Quick and Dirty. ok, 5+1 wg \n. Compiler können trotzdem besser zählen, gerade wenn man Tomaten auf den Augen hat.
-
Thread
"Gruppierung" von Pins
}, { &PORTC, 0x02 }, { &PORTC, 0x08 }, { &PORTC, 0x80 } }; #define PINS_COUNT (sizeof(pins) / sizeof(portpin_t)) static void pinout(portpin_t* pp, bool high) { if(high) { *(pp->port) |= pp->pinmask; } else { *(pp->port) &= ~pp->pinmask; } }
-
Thread
C++ Amp Matrix Multiplikation vs MatLab
[c] A_SUB = (double*)mkl_malloc(m * k * sizeof(double), 64); B_SUB = (double*)mkl_malloc(k * n * sizeof(double), 64); C_SUB = (double*)mkl_malloc(m * n * sizeof(double), 64); count = 0; for (int i = 0; i < m; i++) {
-
Thread
Funktionsaufruf in C mit array type pointer
In der Funktion dann aber schon. [c] void Update(AT_eightWords * eW) { printf("%llu\n", sizeof(*eW)); } [/c] Erst sagen, was da raus kommt, dann ausprobieren. Oliver
-
Thread
Byte Array/Word-Array
) > { > *(myBuffer++) = giveMeASixteenBitValue(i); > } Du kannst so nicht wissen, dass sizeof(uint_fast16_t) = 2 ist. Es ist die schnellste Version für 16 Bit. Das können auch 32 Bit sein. Oder 24, .... Aber schreib jetzt nicht statt der 2 sizeof(uint_fast16_t) sondern sizeof(bufferSize)
-
Thread
Atmega 8; EEPROM bei Reset korrumpiert; alle 0 werden zu 255
hat (wahrscheinlich) eine andere Bitbreite. Lasst dir doch mal über Serial oder wie auch immer sizeof(uint8_t) und sizeof(uint8_t*) ausgeben.
-
Thread
Wald vor lauter Bäumen / Arduino PrintString
Serial.begin(115200); } void loop() { const uint8_t txt[] = "Hello World"; size_t tlen = sizeof(txt)-1; PrintString ps; ps.write(txt,tlen); ps.println(); Serial.print(((String)ps).c_str()); delay(10000); } [/c] Dieser code übersetzt nicht, und ich verstehe nicht warum:
Serial.begin(115200); } void loop() { const uint8_t txt[] = "Hello World"; size_t tlen = sizeof(txt) - 1; PrintString ps; ps.write(txt, tlen); ps.println(); //Serial.print(ps.c_str()); Serial.print(ps); delay(10000); } [/c]
-
Thread
smalldragon - a simple Transpiler to C
sich weitere finden :) Allerdings ist das momentan eher ein Kompromiss, da ich das Konzept von sizeof noch nicht uebertragen habe. Man muss sozusagen wissen, wie gross der datentyp ist, von dem man ein Array allozieren will. Gruss
-
Thread
C++17: Templates, Index zu meinem variadic Parameter unpacking
alle Stellen die für mich wichtig sind Problem: in der Result::fetch fehlt mir der Index [1-sizeof...(OutputTypes)] hat jemand eine Idee wie man das lösen kann? Da soll am Ende ein typesafer-rer SQLite Wrapper werden [c] template<typename T> struct Converter; template<> struct Converter
return Output{Converter<OutputTypes>::value(II)...,}; }(std::make_index_sequence<sizeof...(OutputTypes)>{}); output_ = r; } [/c]
-
Thread
IR Arduino Remote Receiver für TSOP7000 und Beo4
_2,sizeof(Beo4_TV_2)/4)) { Serial.println("Beo4_TV_2"); } if (IRcompare(numberpulses, Beo4_TV_3,sizeof(Beo4_TV_3)/4)) { Serial.println("Beo4_TV_3"); } if (IRcompare(numberpulses, Beo4_TV_4,sizeof(Beo4_TV_4)/4)) { Serial.println("Beo4_TV_4"); } if (IRcompare(numberpulses, Beo4_TV_5,sizeof(Beo4_TV_5)/4)) { Serial.println("Beo4_TV_5"); } if (IRcompare(numberpulses, Beo4_TV
-
Thread
signed int (16 bit) über CAN verschicken
nur den Namen (oder den Adressoperator für Index 0) [c] canSend(0x111, (uint8*)debug_au16, 4 * sizeof(debug_au16[0])); [/c]
-
Thread
Ausgabe aller IP-Adressen
main(){ char input[256]; struct addr_list list = {0}; while(fgets(input,sizeof(input),stdin)){ if(!strcmp(input,"\n")) break; if(input[strlen(input)-1]=='\n') input[strlen(input)-1] = 0; struct addrinfo* result = 0; int ret = getaddrinfo(input
(entry->info); } free(list.list); memset(&list,0,sizeof(list)); return 0; } [/c]
-
Thread
welche Datentypen soll ich nehmen?
Man kann sich bspw nur auf gewisse Randbedingungen verlassen: 1) ein char ist immer "1" groß. => sizeof(char) ist immer 1! 2) ein Integer "int" ist mindestens 16 bit breit. (AVR: 16 bit, x86: 32 bit) 3) etc... Felix schrieb im Beitrag #6734054: > Und wieso nimmt man obwohl man stdint.h includiert
-
Thread
I2C Bus mit dem Attiny 841
Null ist, ist ein Master-Schreibvorgang im Gange. { if(tx_buf_index >= sizeof(tx_buf)) // ???? { // ???? tx_buf_index=0; // ???? } // ???? TWSD = tx_buff; // Sendepuffer vom Slave zum Master
Null ist, ist ein Master-Schreibvorgang im Gange. { if(tx_buf_index >= sizeof(tx_buf)) // ???? { // ???? tx_buf_index=0; // ???? } // ???? TWSD = tx_buff; // Sendepuffer vom Slave zum Master
-
Thread
Frage zu static bei C nicht C++
noch nie mit AVRs gearbeitet, wirst sie auch nie anfassen: [c] int *p; int p_len = sizeof(p); // 2 Bytes const int __memx *q; int q_len = sizeof(q); // 3 Bytes [/c] Für 16-Bit x86 bist du zu jung?
-
Thread
Identischer Befehl liefert in for-Schleife falschen Wert
diese For-Schleife den Inhalt von "image_progfuses" ausgeben: [c]for ( uint8_t index = 0; index < sizeof ( targetimage->image_progfuses ); index++ ){ showHex ( targetimage->image_progfuses[index], true, true ); }[/c] was aber falsche Werte zurück gibt. Wenn ich es aber ohne die Schleife mache, stimmen
->image_progfuses[3], true,true );[/c] Ich habe auch überprüft, ob die Indizes stimmen und ob sizeof() den richtigen Wert zurück gibt, beides positiv. Nun bin ich mit meinem Latein am Ende und hoffe auf eure Hilfe. Gruß Hannes
-
Thread
Dynamisches Array im embedded System
string.h> void test(int n) { int test_array[n]; int ende; printf("sizeof int: %d, sizeof test_array: %d, &test_array: %d, &ende: %d\r\n", sizeof(int),sizeof(test_array),&test_array[0],&ende); } int main(int argc, char* argv[]) { test(atoi(argv[1])
{ struct { int test_array[n]; int ende; } s; printf("sizeof int: %ld, sizeof test_array: %ld, test_array: %p, ende: %p, diff: %ld\r\n", sizeof(int), sizeof(s.test_array), &s.test_array[0], &s.ende, (void*)&s.ende - (void*)&s.test_array[0]); }
-
Thread
Unterschied zwischen memcmp und strcmp – Wann was nehmen?
Bartosz B. schrieb im Beitrag #6725015: > Beide Ergebnisse werden **-1**, auch mit sizeof(buffer1) Ach ja, die '\0' ist ja noch beim sizeof dabei
Ok, aber verstehe ich dich richtig, dass hier sizeof das Problem ist?
-
Thread
ADC Messung mit dem Attiny 841
TWSSRA & (1 << TWDIR)) // Master fordert Daten vom Slave an { if(tx_buf_index >= sizeof(tx_buf)) { tx_buf_index=0; } TWSD = tx_buf[tx_buf_index];// Daten in Sendepuffer tx_buf_index++; TWSCRB = ((1<<TWCMD1)|(1<<TWCMD0)); } else
TWSSRA & (1 << TWDIR)) // Master fordert Daten vom Slave an { if(tx_buf_index >= sizeof(tx_buf)) { tx_buf_index=0; } TWSD = tx_buf[tx_buf_index];// Daten in Sendepuffer tx_buf_index++; TWSCRB = ((1<<TWCMD1)|(1<<TWCMD0)); //Das ist die Zeile
-
Thread
Serielle Verbindung.Checksummenberechnung unklar.
^ message[15] ^ message[16] ^ message[17] ^ message[18] ^ message[19]; for (int i = 0; i < sizeof(message); i++) { Serial.print(message[i], HEX); Serial.print(" "); } mySerial.write(message, sizeof(message)); Serial.println(" ");
-
Thread
Verbindungstimeout Programmieren
c] // connect the client socket to server socket if (connect(sockfd, (SA*)&servaddr, sizeof(servaddr)) != 0) { printf("connection with the server failed...\n"); exit(0); } else printf("connected to the server..\n"); [/c] Bei aufgebauter Verbindung
-
Thread
Decoder in C programmieren
printf("Geben Sie eine Zeichenkette ein, die entschüsselt werden soll: \n\n"); fgets(Zeichenkette, sizeof(Zeichenkette), stdin); printf("Enter key: "); scanf("%d", &Key); printf("Nachricht: %s", Zeichenkette); ROT(Zeichenkette, Key); printf("Decodierte Nachricht: %s", Zeichenkette
-
Thread
Objekte aus Liste in Datei speichern
[c] ofstream outputstream("test.dat", ios::binary); outputstream.write((char*)&value, sizeof(value)); outputstream.close(); Hier wieder zu lesen: ifstream inputstream("test.dat", ios::binary); inputstream.read((char*)&value, sizeof(value)); inputstream.close();[/c]