Seite 1 von 1

sind NQCs "void"s macros?

Verfasst: Mittwoch 6. Juni 2007, 18:22
von Costi
es gibt ne progrmmiersprache namens NQC (not quite c).
diese wird zur ansteuerung von diesen lego robotics robotern benuzt.

und da gibt es "void"-funktionen, void funktionen funktionieren intern per copy&paste (der lego robotics kann naemlich nur eine bestimmte anzahl von funktionen speichern, deswegen lagert man kurze code stuecke in diesen voids aus)

nun hab ich in einer informatik klausur geschrieben, dass voids genau wie #DEFINEs macros sind.
das wurde mir aber als fehler mit diesen von uns allen bekannten, untoleranten, fortschritssvernichtenden, besserviserischen roten stifft weggestrichen

zu recht?


Edit (birkenfeld): Not-Quite-Apostrophe entfernt.

Re: sind NQC`s void`s macros?

Verfasst: Mittwoch 6. Juni 2007, 18:28
von gerold
Costi hat geschrieben:und da gibt es "void"-funktionen
Hallo Costi!

"void" bedeutet nur, dass von der Funktion kein Wert zurück kommt. Die Funktion verhält sich somit (ähnlich) wie eine Prozedur.

http://de.wikipedia.org/wiki/Void#Informatik

mfg
Gerold
:-)

Verfasst: Mittwoch 6. Juni 2007, 19:51
von BlackJack
War die Klausur denn überhaupt über NQC? *Genau* wie Makros in C sind die nicht. Eher wie ``inline`` Funktionen in C++.

Verfasst: Mittwoch 6. Juni 2007, 20:28
von Costi
"void" bedeutet nur, dass von der Funktion kein Wert zurück kommt. Die Funktion verhält sich somit (ähnlich) wie eine Prozedur.
ich weiss, das void hat aber in NQC nichts mit rueckgabewerten zu tun.
der name ist nur etwas werwirrend, "def" oder "proc" waere eindeutiger

War die Klausur denn überhaupt über NQC? *Genau* wie Makros in C sind die nicht. Eher wie ``inline`` Funktionen in C++.
jaja, die war ueber NQC
und stimmt!, jetzt hab ichs wieder, voids sind keine makros sondern inline funktioenen, aber wo liegt da der unterschied zu DEFINEs, etwa das DEFINE parametisierbar ist?

Verfasst: Mittwoch 6. Juni 2007, 21:02
von BlackJack
NQC ist stark an C angelehnt und das ``void`` an der Stelle wo es in beiden Sprachen steht, hat in C die Bedeutung das es keinen Rückgabewert gibt. Das trifft ja auch auf NQC zu.

Makros sind im groben nur textuelle Ersetzungen. Die müssen für sich genommen noch nicht einmal syntaktisch korrektes C sein. Funktionen bilden einen Gültigkeitsbereich für lokale Variablen und die Argumente. Die Argumente von Funktionsdefinitionen werden zur Laufzeit übergeben, die von Makros werden bei der Übersetzung eingesetzt. Denke das sind so die wichtigsten Unterschiede.