1) Ich habe viele Konstanten in meinem C Algo. 2) Mein Code funktioniert sowohl in Fließkomma als auch in Festkomma.eine Variable statisch initialisieren (zur Kompilierzeit)
Im Moment werden diese Konstanten durch eine Funktion float2fixed initialisiert, wobei sie im Gleitkomma nichts tut, während sie im Festkomma ihre Festkommadarstellung findet. Zum Beispiel bleibt 0,5f 0,5 f, wenn in Gleitkomma gearbeitet wird, während es die Routine pow() verwendet und 32768 wird, wenn in Festkomma gearbeitet wird und die Festkommadarstellung Qx.16 ist.
Das ist einfach zu warten, aber es braucht viel Zeit, diese Konstanten im Festkomma zu berechnen (pow ist eine Floatinpunkt-Funktion). In C++ würde ich eine Metaprogrammierung verwenden, also berechnet der Compiler diese Werte zur Kompilierzeit, so dass es zur Laufzeit keinen Treffer gibt. Aber in C ist das nicht möglich. Oder ist es? Kennt jemand einen solchen Trick? Ist irgendein Compiler klug genug, das zu tun?
Wir freuen uns auf jede Antwort.
A
Warum können Sie nicht einfach C++ verwenden? – Zifre
C unterstützt keine Preprozessor-Makros? – CookieOfFortune
@CookieOfFortune: Makros sind nicht annähernd so mächtig wie C++ - Vorlagen (sie sind nicht einmal Turing abgeschlossen), aber es ist möglich. – Zifre