C Unterschiede Win <-> Mac

M

mute.de

Mitglied
Thread Starter
Dabei seit
03.09.2007
Beiträge
27
Reaktionspunkte
0
Hallo.
Ich hatte mir extra für die Uni einen Mac zugelegt, wegen Verarbeitung, Stabilität etc.
Mit Programmiersprachen und so dachte ich, dass es schon klappen würde...plattformübergreifend und so....
Und nun bin ich schwer enttäuscht, vielleicht könnt ihr mir helfen...


Ich musste eben feststellen, dass ich ein Programm unseres Profs. zwar unter Windows compilieren und starten konnte, aber nicht unter dem Mac....
Ich musste getch() in getchar() ändern....sicherlich mag das kein Beinbruch sein, aber dann muss ich jedes mal nach abgeschlossener Arbeit Windows-konform ändern und bin nicht sicher ob alles richtig ist....wer weis wieviel Fälle es da noch gibt...

Könnt ihr mir vielleicht sagen woran das liegt? Bzw wie kann ich da eine "Kompatibilität" herstellen?
 
ANSI-C ist ANSI-C ist ANSI-C .
Wenn dein Prof sich da nicht dran hält kann man schwerlich dem Mac die Schuld geben
 
Unser Prof. hat gesagt, dass wir ANSI-C Programmieren und das wohl auch ANSI C sei....
also Mac kann nur ANSI C und das ist kein ANSI C?
 
Könnt ihr mir vielleicht sagen woran das liegt? Bzw wie kann ich da eine "Kompatibilität" herstellen?

Ja, daran, dass der Prof wahrscheinlich Borland C mit conio.h verwendet

Der Prof sollte C nach ISO/IEC 9899:1990 (sog. "C90") verwenden, und schon habt ihr keine Probleme mehr.

getch(3X) sollte es auch dem Mac aber auch in ncurses.h geben.

Alex
 
getch() ist kein ANSI C

Zeichenweise Ein- und Ausgabe

Der einfachste Mechanismus besteht darin, ein einzelnes Zeichen ein- bzw. auszugeben. Zur Eingabe eines Zeichens von Tastatur dient die Funktion getchar(). Prototyp:

int getchar(void);

getchar() liefert bei jedem Aufruf das nächste Zeichen im Eingabestrom (in der Regel stdin) oder den (ebenfalls in stdio.h definierten) Wert EOF (end of file) zur Kennzeichnung, daß der Eingabestrom geschlossen worden ist[
Quelle
 
Wenn verbieten die endlich conio.h an den Schulen ;)
 
  • Gefällt mir
Reaktionen: below
werden da noch mehr Unstimmigkeiten entstehen/können?

Ich schreib ihm diesbezüglich gleich mal ne mail
 
Hier ein kleines Zitat aus dem Openbook aus dem Galileo Verlages:
Hinweis für Programmierneulinge Auch wenn es bei der Funktion getchar() den Anschein hat, dass hier mit ganzen Strings gearbeitet wird, ist dem nicht so. Diese Funktion liest Zeichen für Zeichen aus einem Puffer.
Dies geschieht aber erst, wenn die Taste ENTER gedrückt wird. Suchen Sie nach einer Funktion, die auf Betätigung einer bestimmten Taste wartet, könnte die Funktion getch() für Sie interessant sein. Für MS-DOS steht diese Funktion sofort zur Verfügung, z.B.: while( (c=getch()) != 'q');. Damit wird das Programm so lange angehalten, bis die Taste q gedrückt wird. Unter Linux müssen Sie dafür die Bibliothek <ncurses.h> oder <termios.h> verwenden. Der Nachteil von getch() ist, dass das Programm damit schlecht auf ein anderes System portiert werden kann.
 
Uhh, mir war gar nicht bewusst, dass auch die Library-Funktionen im Standard stehen (und habe ungläubig nachgeschaut), liegt wohl daran, das wir für embedded-Software keine Standard-Library-Funktionen nutzen..

Gruß
jo
 
zu den Eintrag von pdr2002

z.B.: while( (c=getch()) != 'q');. Damit wird das Programm so lange angehalten, bis die Taste q gedrückt wird.



ich dachte es läuft solange bis man q drückt ...zB in einer do while schleife?
 
Das macht es ja auch. Nur ist deine Schleife leer.
 
Unser Prof. hat gesagt, dass wir ANSI-C Programmieren und das wohl auch ANSI C sei....
also Mac kann nur ANSI C und das ist kein ANSI C?
Gestern hat ein deutscher Prof einen Nobelpreis bekommen und heute hat ein deutscher Prof einen Nobelpreis bekommen.

Für Mathematik gibt es aber keinen Nobelpreis.
 
mute.de schrieb:
und das wohl auch ANSI C sei....
also Mac kann nur ANSI C und das ist kein ANSI C?

Herr Gödel hätte Verständnis für diesen Widerspruch gehabt ;)

Für Mathematiker gibt es Medaillien, ansonsten reicht es ihnen wenn sie ihre eigene Singularität gefunden haben in der sie ihre innere Emigration verbringen können :D
 
Für Mathematiker gibt es Medaillien, ansonsten reicht es ihnen wenn sie ihre eigene Singularität gefunden haben in der sie ihre innere Emigration verbringen können :D
Elfenbeinturm?

Nein, ich habe weder etwas gegen Mathematiker noch gegen Mathematik – ganz im Gegenteil.
 
Ja ich habe nun ein bisschen rumgespielt...also mit conio.h unter windows wird per getch() auf eine eingabe gewartet...getchar() soll ja das ansi-c pendant sein, leider funktioniert dies nicht...

wie kann ich nun alle / fast alle conio.h funktionen in mein mac einbauen?...der transfer von conio.h von windows (zusammen mit einer anderen, die als include in der conio.h stand) brachte keinerlei erfolg...
 
Ja ich habe nun ein bisschen rumgespielt...also mit conio.h unter windows wird per getch() auf eine eingabe gewartet...getchar() soll ja das ansi-c pendant sein, leider funktioniert dies nicht...

wie kann ich nun alle / fast alle conio.h funktionen in mein mac einbauen?...der transfer von conio.h von windows (zusammen mit einer anderen, die als include in der conio.h stand) brachte keinerlei erfolg...

Es ist echt nur das getch() das Problem? Sonst nix???

Dann würde ich vorschlagen: Bau die Funktion des getch() doch nach - scheint ja nichts sooo aufregendes zu sein - und benutz dann DAS.


Oder besorg Dir VMWare Fusion und regel es unter Windows im Fenster.

Ganz ehrlich: Ich erinnere mich, dass ich damals mit TurboC alle BEKLOPPT gemacht habe, weil um mich rum alle einen AMIGA hatten. Da gingen dann viele der Sachen nicht, die ich problemlos benutzen konnte.

Dass das IMMER noch ein Problem ist, ist frustrierend, finde ich.


PS: Shit, ich sehe gerade, Du hast ein Powerbook G4. Dann geht das nicht mit VMWare. Hm. :-(
 
wie kann ich nun alle / fast alle conio.h funktionen in mein mac einbauen?

Also: Erstmal schöne Grüße an den Prof. An welcher Stelle ist denn conio.h ein Teil von "ANSI C" (Er meint wahrscheinlich ISO C89 oder ISO C90)?

Zum Thema: Versuch es mal mit <ncurses.h> auf dem Mac, da sollten die meisten Funktionen von conio.h drin sein.

Und nur um es nochmal glasklar zu sagen: Das ist kein Mac Problem, sondern ein Windows Problem. conio.h gibt es nur auf Windows, nicht auf Mac, Linux, Solaris oder sonstwas.

Alex
 
Zurück
Oben Unten