Hallo. Wollte gerne Speicherplatz für eine uint8_t Variable global reservieren. Sobald ist dies tue, sagt der Compiler folgendes
1 | |
1 | |
So versuche ich den Speicherplatz zu reservieren. Ist das falsch? In der main() klappt es jedoch.
|
Anzeige
|
Speicherplatz global reservieren?!Hallo. Wollte gerne Speicherplatz für eine uint8_t Variable global reservieren. Sobald ist dies tue, sagt der Compiler folgendes
So versuche ich den Speicherplatz zu reservieren. Ist das falsch? In der main() klappt es jedoch. Jan H. schrieb: > uint8_t *buff = (uint8_t *) calloc(11,sizeof(int)); > So versuche ich den Speicherplatz zu reservieren. Ist das falsch? In der > main() klappt es jedoch. Ds geht statisch so nicht ... Du würdest dann einfach uint8_t buff[11*sizeof(int)]; schreiben, dann klappt es. Jan H. schrieb: > Hallo. > Wollte gerne Speicherplatz für eine uint8_t Variable global reservieren. > Sobald ist dies tue, sagt der Compiler folgendes > Fehler initializer element is not constant > uint8_t *buff = (uint8_t *) calloc(11,sizeof(int)); Die Meldung sagt eigentlich recht klar, was das Problem ist. In C können Funktionen nicht vor main() ausgeführt werden. Deshalb können globale Variablen ausschließlich mit Konstanten initialisiert werden. Ah und normalerweise landen globale Arrays (ohne vorinitialisierte Werte) in der .bss-Section. Der Startup-Code sollte alles, was in .bss ist, mit 0 initialisieren. Vergewissere dich aber lieber nochmal ... @ Jan Abgesehen davon, dass an der angegebenen Stelle keine Funktionen ausgeführt werden können: Was soll das Ganze überhaupt? Du redest von Global, benutzt eine Funktion um immer den gleichen Speicher (Größe) zu reservieren. Oder willst Du unbedingt den Code aufblähen oder das Programm komplizierter gestalten?
Beitrag #5132409 wurde von einem Moderator gelöscht.
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|