-
Thread
typedef union
immer noch nicht. denn es ergibt sizeof(memberA) ist = sizeof(memberB) trotzdem gibts inder Zeile memset( &memberA, 0, sizeof(memberA)); Müll
printf("Init\n"); printf("%p %p %p\n", this, &memberA, &memberB); printf("%ld %ld %ld\n", sizeof(*this), sizeof(memberA), sizeof(memberB)); memberA.elementA = 1; memberB.elementA = 2; nochwas[0] = 3; printf("%d %d %d\n", memberA.elementA, memberB.elementB, nochwas[0])
-
Thread
C++11 std::array mit struct
{false, "hihie",13} }; void test_c99 (void) { for ( uint i = 0; i < sizeof (c99_lut ) / sizeof ( r_data ); i++ ) { std::cout<<\ i<<") "<<\ c99_lut[i].e_use<<" "<<\ c99_lut[i].e_name<<\ " Double = "<<(c99_lut[i].e_value)<<\
Problem habe ich aber mit den C++11 std::array Bei C99 kann ich schreiben: #define LUT_SIZE sizeof ( C99_lut ) / sizeof ( r_data ) und dann r_data C99_lut[] = {Initialisiererliste...} und LUT_SIZE dann in meine FOR Schleife eintragen Bei C++11 muss ich die Größe bei Definition selbst als zweites
-
Thread
2d int feld in einer struktur
Gründe. Probiers mal so: [c] memcpy(feld1.spielfeld, (int[3][3]){{1,1,1},{0,0,0},{2,1,0}}, sizeof(int[3][3])); [/c] Oder wenn Du das ganze struct in einem Rutsch mit Werten füllen willst dann geht das sehr elegant mit einem compound literal für das ganze struct, denn ein struct darf durchaus
-
Thread
C++ Kompilierzeiten/VStudio 2017
template<unsigned... I1, unsigned... I2> struct concat<seq<I1...>, seq<I2...>> : seq<I1..., (sizeof...(I1)+I2)...>{}; template<class S1, class S2> using Concat = Invoke<concat<S1, S2>>; template<unsigned N> struct gen_seq; template<unsigned N> using GenSeq = Invoke<gen_seq<N>>; template
-
Thread
c prog, usefull macros, u32->f, f->u32, better do/while block
... next und immer wieder gern gesehen! [c] #define sizeofmem(t,m) sizeof(((t*)0)->m) // size of struct member #define sizeoflen(a) (sizeof(a)/sizeof(a[0])) // size of array element [/c]
-
Thread
sprintf funktioniert bei Tasks nicht??
truncated writing 23 bytes into a region of size 10 [-Wformat-truncation=] 8 | snprintf(a,sizeof(a),"Dieser Text ist zu lang"); | ~~~~~~~~~~^~~~~~~~~~~~~ test.c:8:3: note: ‘snprintf’ output 24 bytes into a destination of size 10 8 | snprintf(a,sizeof(a),"
-
Thread
6502 Assembler - Zweck einer Funktion
ifstream ramfile("ramimage.bin"); if(ramfile.is_open()) { ramfile.read((char*)ram, sizeof(ram)); ramfile.close(); } ExecUnknownFunc(0, 0); ExecUnknownFunc(1, 1); ExecUnknownFunc(11, 55); ExecUnknownFunc(20, 2200); ExecUnknownFunc(111, 8); } [
-
Thread
Wie rechne ich ich bitte in TC3 diese 2 Werte um in Seg und Offs Adre.
*(p+y)=117; *(pp+y)=45; } } int main () { char cmd; p = malloc(64000 * sizeof(char)); pp = malloc(64000 * sizeof(char)); SetMode13h (); do { cmd = toupper(getch()); switch (cmd) { case 'Q': voll(p, pp); break; case 'W
-
Thread
malloc nur innerhalb einer main ?
Peter B. schrieb im Beitrag #6146130: > unsigned char *p = malloc(64000 * sizeof(char)); > unsigned char *z = malloc(64000 * sizeof(char)); > > int main(void) { nee, sowas ist auch nicht erlaubt, Funktionsaufrufe im Niemandsland. [c] unsigned char *p; unsigned char *z; int main(void) { p = malloc(64000 * sizeof(char)); z = malloc(64000 * sizeof(char)); [/c]
-
Thread
Wie weit kann man den Malloc-Speicher treiben 1x 5x beim 8086?
#include <stdio.h> #include <stdlib.h> int main(void) { unsigned char *p = malloc(64000 * sizeof(unsigned char)); unsigned char *z = malloc(64000 * sizeof(unsigned char)); if(p != NULL) { *p=99; /* alternativ auch p[0] = 99 */ *(p+63999) = 255; /* alternativ
Die Prüfung von z != NULL fehlt. Außerdem ist per Sprachdefinition sizeof(unsigned char) = sizeof(signed char) = sizeof(char) = 1 Grüße
-
Thread
Speicher für eine Grafik VGA320X200 256 Color. 8086
ich, die passen dann nicht zum TC3. Das malloc zb habe ich gefunden: int * array = malloc(2 * sizeof(int)); Funktioniert nicht. Danke. Gruss
-
Thread
Programm umschreiben
// druckt den aktuellen Tag Serial.print(" "); strftime (buf, sizeof(buf), "%d.%m.%Y %T ", &tm); // http://www.cplusplus.com/reference/ctime/strftime/ if (!(time(&now) % 86400)) { // einmal am Tag die Zeit vom NTP Server holen o. jede Stunde
-
Thread
Extrahieren eines Teil-Strings aus einer Konstanten
SVNVERSION; // Die letzen beiden Zeichen abschneiden (ende-Markierung setzen) svnversion[sizeof(svnversion)-2] = '\0'; // Auf die Nummer hinter dem Anfang der Zeichenkette zeigen char* zeiger = svnversion+11; // Nummer ausgeben puts(zeiger); return 0; } [/c] Ausgabe: [pre] 214 [/pre] Achtung: sizeof() funktioniert hier nur deswegen, weil die Größe des Arrays schon zur Compile-Zeit feststeht, da SVNVERSION eine bekannte Länge hat (die ändert sich nach dem Compilieren nicht mehr). Wenn du das
-
Thread
Wie gross kann ein Array sein beim 8086 mit TC 3.0
Diese Typen gibts aber erst ~15 Jahre nach Einführung von Turbo C 3.0. Hier müsste man mit sizeof(void *) o.ä. arbeiten...
-
Thread
[C - C++] wohin gehört das #define
Bauform B. schrieb im Beitrag #6134924: > const int bufferSize = sizeof buffer / sizeof buffer[0]; "sizeof buffer[0]" ist relativ sinnlos, denn das ist immer 1, da "sizeof(char)" /immer/ 1 ist. Rolf M. schrieb im Beitrag #6134941: > In der Praxis habe ich damit
Programmierer schrieb im Beitrag #6134957: > Bauform B. schrieb: >> const int bufferSize = sizeof buffer / sizeof buffer[0]; > > "sizeof buffer[0]" ist relativ sinnlos, denn das ist immer 1, da > "sizeof(char)" immer 1 ist. Gilt aber nur, solange der Elementtyp char ist. Wenn man den mal
-
Thread
Zeiger Array
Lückengrösse übergeben, also wieviele elemente zu überspringen. ( "some_function(&somearray[0].b, sizeof(somearray[0])/sizeof(somearray[0].b))" ). Geht halt dann nur mit arrays, aber nicht mit linked lists oder so. 3) Ein Iterator. Das ist ja normalerweise auch der C++ Ansatz. Ich versuch mich mal
count = (N), \ .current = (X) }) #define ARRAY_ITERATOR(T, N, X) SPARSE_ARRAY_ITERATOR(sizeof(T), N, (T*){(X)}) #define SPARSE_ARRAY_ITERATOR(T, S, N, X) SPARSE_ARRAY_ITERATOR(sizeof(T) * S, N, (T*){(X)}) #define ARRAY_MEMBER_ITERATOR(T, N, X, M) GENERIC_ARRAY_ITERATOR(T, sizeof(*X), N, (
-
Thread
Array größe berechnen
Stichwort: sizeof()
S. R. schrieb im Beitrag #6124792: > Oder du machst einfach ein printf("%d\n", sizeof(Array)) sizeof gibt ein size_t zurück. Darum: [c] printf("%zu\n", sizeof(Array)); [/c]
-
Thread
Arduino put() get() ein ppar Fragen dazu.
der Versionsnummer die passende Struktur befüllen: immer ab Eeprom Adresse 0 mit dem passenden sizeof(EEPDATA). Schreiben erfolgt ebenfalls mit dem aktuellen sizeof(EEPDATA) ab Adresse 0. Es empfiehlt sich, in der Struktur erst die 32Bit Variablen, dann die 16Bit Variablen und erst am Ende die
der Versionsnummer die passende Struktur befüllen: > immer ab Eeprom Adresse 0 mit dem passenden sizeof(EEPDATA). > > Schreiben erfolgt ebenfalls mit dem aktuellen sizeof(EEPDATA) ab Adresse > 0. put und get benötigen kein externes sizeof(). Das haben sie selber im Bauch. offsetof() ist da viel
-
Thread
SK6812 schwanken in Helligkeit - bekanntes Problem?
= (uint32_t) &TIM1->CCR4; DMA1_Channel1->CMAR = (uint32_t) &oData; DMA1_Channel1->CNDTR = sizeof(s_Data); DMA1_Channel1->CCR = DMA_CCR_MINC | (0b00 << 10)| (0b01 << 8) | DMA_CCR_DIR; DMA1->IFCR = DMA_IFCR_CTCIF1; DMAMUX1_Channel0->CCR = 25; if(bVal){ DMA1_Channel1->CCR |= DMA_CCR_EN
-
Thread
ID mit Wert nach sortierung wieder richtig ausgeben
vertauschen, um Reihenfolge zu ändern } void sortWertByZahlen(wert arr[], int n){ qsort(arr, n, sizeof(*arr), comperatorWertByZahlen); } [/c]
-
Thread
ESP32 WROVER mit 8MB PSRAM (Arduino)
Info. Code: uint32_t N = 3932092; byte* Ram_Buf; if (Ram_Buf = (byte*)heap_caps_malloc(sizeof(byte)*N, MALLOC_CAP_SPIRAM)) Serial.println("heap_caps_malloc succeeded"); else Serial.println("heap_caps_malloc failed"); Serial.println("\nheap_info"); heap_caps_print_heap_info
-
Thread
Out of Memory Error im STM32 mit LWIP
[/c] oder [c] int optval = 1; lwip_setsockopt(s, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof(optval)) [/c]
, SOL_SOCKET, SO_RCVTIMEO, (char *)&interval, sizeof(struct timeval)); int tmp = 1; lwip_setsockopt( sock , SOL_SOCKET, SO_REUSEADDR, (const char *) &tmp, sizeof( tmp ) ); lwip_listen(sock,3); return sock; } void http_server_send( const
-
Thread
Mehr UB erkennen (C++)
because of std::memcpy (use std::bit_cast) to_type r; // begin-of-life std::memcpy(&r, &d, (sizeof(from_type) > sizeof(to_type) ? sizeof(to_type): sizeof(from_type))); // copy-state (must be trivially-copyable) return r; } [/c] Natürlich ist std::memcpy() genauso effizient (noop) wie der
-
Thread
system_clock::now() liefert UTZ, benötige GMT + 1
ctime> std::string getDate() { time_t t = time(NULL); char buffer[30]; strftime(buffer, sizeof buffer, "%FT%TZ", localtime(&t)); return std::string(buffer); } [/c] Das ist vielleicht kein "Modern C++", funktioniert aber dafür ;-)
(struct tm tm{}; localtime_r(&t, &tm) != nullptr) { if (char buffer[30]; strftime(buffer, sizeof buffer, "%FT%TZ", &tm) > 0) { return std::string{buffer}; } } return {}; } [/c] Wahrscheinlich sollte Dein Beispiel nur das Prinzip zeigen. Leider kursiert solcher Code
-
Thread
MAX7219: einzelne LED ansteuern
auf das ich das damals mit enum gemacht habe. Funktioniert zwar hier, nur leider kann man nicht sizeof anwenden. Deswegen habe ich das etwas modernisiert und möchte das noch zeigen. Dann kann man die Anzahl der Digits automatisch ermitteln lassen und überall verwenden. Man darf nur nicht im struct die
MATRIX.segment.DP}, // LED 30 {MATRIX.digit.D2, MATRIX.segment.DP} // LED 31 }; const byte ANZAHL_LED = sizeof(LED) / sizeof(Led); const byte ANZAHL_DIGIT = sizeof(MATRIX.digit); [/c] So, genug gequatscht. :-)
-
Thread
fr_disk_error oder fr_invalid_object nach f_close
f_open(&myFILE, FILENAME_LOG_INC, FA_WRITE|FA_OPEN_APPEND); f_write(&myFILE, &MOTCTRL_STRING.cmd, sizeof(MOTCTRL_STRING.cmd), &written_bytes); f_write(&myFILE, "\r\n", strlen("\r\n"), &written_bytes); fresult1 = f_close(&myFILE); [/c] Das Schreiben funktioniert soweit auch einige Wiederholungen
-
Thread
GSM-Modul sendet SMS ohne Inhalt
_1.io, text, sizeof(text)); delay_ms(500); io_write(&USART_1.io, ctrlz, sizeof(ctrlz));
Versuche mal an Stelle von sizeof(text) direkt 6 einzusetzen.
-
Thread
SQL File in Visual Studio 2019 statisch in Quellcode einfügen
/\\/\\\\/g' | sed 's/"/\\"/g' | sed 's/.*/ "\0\\n"/'; \ printf "};\nconst size_t %s_size = sizeof(%s)-1;\n" "$$id" "$$id"; \ ) | $(CC) -c -o "$@" -x c - $(CC_OPTS) $(CPPFLAGS) $(CFLAGS) [/code] res/hello.txt [code] Hello World! [/code] src/main.c [code] #include <stdio.h> int
-
Thread
Size von Vektor mit Zeigern auf char-arrays ermitteln
Lutz S. schrieb im Beitrag #6096055: > (sizeof commands)/(sizeof &commands[0]) > > Das sieht nicht elegant aus, ... und ist auch flasch. [c] (sizeof commands)/(sizeof commands[0]) [/c] Wenn sich die Anzahl der commands aendert, wuerde
Bernd B. schrieb im Beitrag #6096100: > Genausogut könnte man auch sizeof(char*) wenn man (sizeof arrayname)/(sizeof arrayname[0]) oder (sizeof arrayname)/(sizeof *arrayname) nimmt, braucht man sich keine Gedanken um den Typ machen. Egal ob int, char, char* oder struct
-
Thread
Externer struct zugriff
Wenn ich im eeprom.c z.B. "Hallo Welt!" schriebe mit [c] memcpy(struct_eeprom_data, "Hallo Welt!", sizeof("Hallo Welt!"); [/c] (Mit dem Debugger kontrolliert ist das "Hallo Welt!" auf der stelle 0 wie es auch sein sollte) sehe ich im data.c zwar das "Hallo Welt!" aber nicht an der selben stelle sonder
den ich nicht finde. Als Test habe ich mit: [c]memcpy(struct_eeprom_data, "Hallo Welt!", sizeof("Hallo Welt!");[/c] Versucht einen String zu kopieren und diesen dann aus dem anderen File zu lesen mit dem Debugger. Das hat nichts mit der Ansteuerung vom EEPROM zu tun. Es hat auch nichts mit
-
Thread
FreeRTOS - ESP8266 "vergisst" Bytes beim Senden über SPI
WRITE_CMD, addrMSB, addrMLSB, addrLSB, 133 }; while(true) { send_spi(writeMsg, sizeof(writeMsg)); vTaskDelay(10 / portTICK_PERIOD_MS); send_spi(readMsg, sizeof(readMsg)); vTaskDelay(25 / portTICK_PERIOD_MS); const uint8_t resp = read_spi();
WRITE_CMD, addrMSB, addrMLSB, addrLSB, 133 }; while(true) { send_spi(writeMsg, sizeof(writeMsg)); vTaskSuspend(master_write_task); send_spi(readMsg, sizeof(readMsg)); vTaskSuspend(master_write_task); const uint8_t resp = read_spi(); /* ... */