Software > Coding
Neues Projekt auf AtariForge: libcmini
mfro:
--- Zitat von: simonsunnyboy am Mi 16.04.2014, 17:25:38 ---Eben, und den kann die lib mitbringen. Dann braucht sich der Benutzer nicht mehr darum kümmern.
Wer C++ verwenden will, dem unterstelle ich, daß die libcmini eher sowieso nicht verwendet wird (optimiert für C).
--- Ende Zitat ---
__attribute__((constructor)) und __attribute__(destructor) hat nichts (zumindest nicht unmittelbar) mit C++ zu tun. Das kann man durchaus auch prima in C verwenden.
simonsunnyboy:
Das entfernt sich dann aber von jeglichem ISO Standard....
mfro:
--- Zitat von: simonsunnyboy am Mi 16.04.2014, 19:14:41 ---Das entfernt sich dann aber von jeglichem ISO Standard....
--- Ende Zitat ---
Nö, nicht unbedingt. Die Implementierung von irgendwelchen Initialisierungsroutinen oder das Aufrufen von mit atexit() angemeldeten Funktionen läßt sich darüber lösen, ohne daß man den Startup-Code als Quelle ausliefern müsste (was trotzdem meist passiert). Der ISO-Standard sagt nicht, wie das passieren, nur daß es möglich sein muß.
mfro:
Wo ich schon mal dran bin:
libcmini gibt es jetzt in einer releasten, vorcompilierten Form hier zum Runterladen. Die Beispielprogramme (bench, insbesondere) wurden ein wenig erweitert und stehen als Quellen zur Verfügung. M.E. gut als "Skellett" geeignet für Leute, die in die GEM-Programmierung einsteigen möchten. Die Makefiles erzeugen Code für m68000, m68020-60 und Coldfire (jeweils in der "mshort" und "normalen" Version.
Count:
Ich setze hier mal auf. :D
Lebt das Projekt noch? Die letzten Sourcen, die ich heruntergeladen habe, sind mehr als ein Jahr alt. Ich habe eine Reihe Bugs behoben und neue Funktionen hinzugefügt. Ich habe zwar auf der Version 0.5 aufgesetzt, das ganze aber heute mit der 0.6 abgeglichen. So viel hat sich da ja nicht getan.
Bugs habe ich zum Beispiel bei ...printf gefunden (Nachkommastellen bei %f funktionierten u.a. nicht), aber auch woanders. vsnprintf() kann jetzt auch mit NULL-Pointer umgehen. Das ist wichtig, weil man so den benötigten Speicherplatz für eine Formatierung ermitteln kann. Dadurch konnte ich asprintf() und vasprintf() implementieren (s.u.).
Ich habe ein paar Funktionen hinzugefügt. Zum Beispiel qsort(), asprintf(), vasprintf(), ...scanf(), strtod(), strtof(), feof(), ferror(), ungetc(), getchar(), fgets(), getc(), fflush(), remove(), rename(), bsearch(), strnlen(), strtok(), localtime(), strftime().
Die FILE-Struktur habe ich erweitert, um feof(), ferror() und ungetc() implementieren zu können, und die Feldnamen denen der MINT-Library angepasst.
mktime() habe ich korrigiert, hier wurden Schaltjahre nicht richtig berücksichtigt (einfaches Teilen durch 4 reicht nicht).
ctype.h hat ein paar neue Makros bekommen (isalnum, iscntrl, isgraph, isprint, ispunct, isxdigit) und isspace berücksichtigt jetzt auch "\f").
Die ...scanf()-Funktionen müssen noch ordentlich getestet werden, das habe ich nur rudimentär gemacht. Aber ich fände es gut, wenn das Projekt nicht einschläft, denn die Speicherersparnis ist schon enorm. Allein mein kleines Testprogramm für sscanf() ist nur 16,5 KB groß, mit der MINT-Library sage und schreibe das Zehnfache!
Meine aktuellen Sourcen von heute könnt ihr gerne herunterladen:
http://www.graf-bussmeier.de/download/libcmini_20170729.rar
Änderungen werden ja mit diff sichtbar. ;)
Oliver
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln