2 Fagen zu C

Liebe wer-weiss-was-Gemeinde,
kennt ihr eine Aufstellung von Befehlen von C (nicht C++) im Internet? Womöglich mit deutscher Erklärung?
Gibt es bei C die Funktion „Gosub“, wo eine Subroutine aufgerufen wird?
Ich habe im Internet gesucht und fand nichts.
Im Voraus vielen Dank für Antworten!
Viele Grüße
Stefan

Hallo Stefan,

kennt ihr eine Aufstellung von Befehlen von C (nicht C++) im
Internet? Womöglich mit deutscher Erklärung?

Hier muss man bei C genau unterscheiden:
Neben den Operatoren, gibt es in C nur so 30-40 Schlüsselwörter!
Der ganze Rest sind Bibliotheken, welche genau genommen nicht Teil des Compilers sind.
Da dies viel nützlich Funktionen sind, welche die meisten Programmierer benötige, gibt es in C auch eine Norm dieser Bibliotheken.

Dies ist aber genau auch die Stärke von C. Ich kann z.B. mein eigenes printf() schreiben, welches auf einem MicroController dann die Ausgabe z.B. über die serielle Schnittstelle macht. Ich kann dann den Selben Sourcecode auf dem PC und dem MicroController verwenden und muss nur unterschiedliche Bibliotheken linken.
In BASIC kannst du die PRINT-Funktion nicht ersetzen, da sie Teil des Compilers ist, du musst einer eigenen PRINT-Funktion einen anderen Namen geben.
Pascal kennt bei WRITE zwar die Übergabe von variablen Parametranzahlen, dies ist aber in eigenen Prozeduren nicht möglich.

Hier. leider nur in englisch und K&R-Standard:
http://net.pku.edu.cn/~course/cs101/2008/resource/Th…
Das gesuchte wäre in Appendix A + B

Hier noch ein Tutorial auf deutsch.
http://www.c-programmieren.com/C-Lernen.html

Gibt es bei C die Funktion „Gosub“, wo eine Subroutine
aufgerufen wird?

Nein das gibt es nicht :smile:
C ist eine prozedurale Sprache, jeder Funktionsaufruf entspricht einem Gosub mit Parameter-Übergabe.

Es gibt zwar noch ein goto, aber dies sollte man nur im Notfall verwenden, bzw. lässt sich manchmal bei der Fehlerbehandlung nicht vermeiden.

MfG Peter(TOO)

Howdy,

Gibt es bei C die Funktion „Gosub“, wo eine Subroutine
aufgerufen wird?

Nein das gibt es nicht :smile:

aber man kann es, wenn man es denn unbeding moechte mit Sprachmitteln nachstellen.

#include 

typedef void (\*f)();

void f1() 
{
 printf("in 1\n");
}

void f2() 
{
 printf("in 2\n");
}

void gosub(f func)
{
 func();
}

int main()
{
 gosub(f1);
 gosub(f2);
 return 0;
}

aber dieses nutzt man nur in speziellen Faellen. Meistens wuerde etwas derartiges andere Programmierer verwirren.

Gruss
E.

Hallo E.,

aber man kann es, wenn man es denn unbeding moechte mit
Sprachmitteln nachstellen.

Ich habe da schon viel schlimmeres gesehen :frowning:

So anfangs der 80er, als C sich bei den Hobby-Programmieren auszubreiten begann, gab es eine Gruppe, welche meinte, dass C wie Pascal aussehen muss :frowning:

Das gabs dann auch Bücher mit Disketten zu.
Das sah dann in etwas so aus:

#define begin {
#define end }
#define procedure void
#define write(x) printf(x)

procedure f1() 
 begin
 write("in 1\n"); 
 end

Nicht alles was in C machbar ist, macht auch einen Sinn!
Aber wenn man mit C umgehen kann, kann man viel Sinnvolles damit machen.

Mit Zeigern auf Funktionen kann man viel Sinnvolles anstellen, z.B. Tabellen, als Herz für Automaten.

MfG Peter(TOO)

Hi Peter,

Ich habe da schon viel schlimmeres gesehen :frowning:

So anfangs der 80er, als C sich bei den Hobby-Programmieren
auszubreiten begann, gab es eine Gruppe, welche meinte, dass C
wie Pascal aussehen muss :frowning:

ja, sowas hatte ich in einem meiner ersten C Projekte vor fast 30 Jahren bei einem Kollegen auch gesehen. Allerdings musste er es rueckgaengig machen, weil weder der Auftraggeber noch die Mitstreiter das so sehen wollten…

Mit Zeigern auf Funktionen kann man viel Sinnvolles anstellen,
z.B. Tabellen, als Herz für Automaten.

ich benutze die sehr haeufig fuer FSM, allerdings nur auf dedizierten Plattformen, denn… nicht in allen Architekturen ist dieses eine performante Operation.

Gruss
E.

Moin,

So anfangs der 80er, als C sich bei den Hobby-Programmieren
auszubreiten begann, gab es eine Gruppe, welche meinte, dass C
wie Pascal aussehen muss :frowning:

Das kann natürlich auch praktisch sein, wenn man das selbe Programm auch unter Pascal compilieren kann.

Grüße,
-Efchen