Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Basic++ TEST Kategorie: Programmierung Basic (von Stefan Tappertzhofen, Homepage - 28.01.2005 23:44)
 Als Antwort auf Basic++ TEST von Pit Demmer - 28.01.2005 23:27

> 27 Bytes RAM verbraucht! Basic++ scheint sich um die explizite Deklaration in Klammern[] nicht zu scheren, das find ich ganz übel!


Hallo,

mehrfach Deklarationen von Bytes und Überschneidungen mit Word Variaben etc. werden auch mehrfach gezählt (das ist technisch einfacher und unkritischer für den Compiler). BASIC++ legt standartmäßig für die M Unit 2.0 und Micro genau 2 Byte mehr an und die sind für die Rückgabe reserviert. Wenn Du mit der alten Unit arbeitest kannst Du das aber ausschalten (siehe Option CC1.0 Befehl in der Referenz).

Es stimmt, dass lokale Variablen _ohne_ Angabe von Offsets (die Offset Angabe wird von BASIC++ untersützt und sogar ausdrück empfohlen zu verwenden) schnell viel Variablenspeicher belegen, da der Compiler den Offset automatisch hochzählt. Diesen Nachteil kann man aber nur als Programmierer kompensieren. Da hat der Compiler keine Möglichkeiten. Ablöse verschaffen eben direkte Offsets oder globale Variablen. Wenn Du Probleme bei Funktionsübergabeparametern hast kannst Du auch auf den sehr effizient nutzbaren REF Befehl (wieder siehe Referenz) zurückgreifen.

Das System der lokalen Variablen macht vorallem Sinn bei der Verwendung von selbstprogrammierten Bibliotheken mit Funktionen, die man in mehreren Programmen aufrufen will. Hier sind lokale Variablen (in einem geschützen Speicherbereich -> siehe Referenz {ASSIGN}) sehr hilfreich. Das macht die ganze Sache modularer und portabler.

Wenn Du noch Fragen hast zum Thema lokale und globale Variablen kann ich Dir gerne eine tiefergehende Einleitung geben.

Gruß,

Stefan

Meine Homepage: http://www.fdos.de/ccbpp

 Antwort schreiben

Bisherige Antworten: