PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] .c oder .C



Siro
01.12.2014, 17:08
Hallo zusammen,
ich bin seit Tagen auf der Suche warum meine LPCXpresso IDE meine Projekte nicht richtig compiliert.
Dann habe ich festgestellt, dass einige Dateien im Makefile garnicht auftauchten. Die Ursache war mir völlig unklar.
Nach vielen Versuchen habe ich mich entschlossen ins Forum bei LPCXpresso zu posten und dann wurde mir gesagt,
dass generell die Dateiendung ein "kleines" c sein muss.
Das hab ich nun ausprobiert und tatsächlich .C (grosses C) ignoriert die IDE.
Nun hab ich mal auf meiner Platte nach allen .C Dateien gesucht und anscheinend ist das Microchip egal, ebenso wie bei IAR.

Nun zur Frage: gibt es eine Festlegung für die Endung von C-Dateien laut C99 oder ähnlich oder ist das wirklich nur spezifisch bei LPCXpresso das es ein .c sein muss ?
Und wie sieht es bei den .H bzw .h Dateien aus ?

erstaunte Grüsse von
Siro

Wsk8
01.12.2014, 18:00
http://stackoverflow.com/questions/15511711/gcc-to-compile-c-file-that-ends-with-c-capital-c

mfg

Peter(TOO)
01.12.2014, 19:51
Hallo Siro,


Nun zur Frage: gibt es eine Festlegung für die Endung von C-Dateien laut C99 oder ähnlich oder ist das wirklich nur spezifisch bei LPCXpresso das es ein .c sein muss ?
Und wie sieht es bei den .H bzw .h Dateien aus ?

Ist immer ein Kleinbuchstabe .c, .h

Das Verhalten hat traditionelle Gründe!

Unix hatte von Anfang an, bei den Dateinamen Gross/Kleinschreibung beachtet. Da musste man sich halt einigen.
Init und init sind bei Unix unterschiedliche Dateien.

IAR hat seine Compiler anfänglich für DOS entwickelt. DOS kann Gross/Kleinschreibung nicht unterscheiden.
Init, init inIT,INIT sind da alles die selbe Datei und diese darf nur einmal vorkommen.
Windows behält zwar die Gross/Kleinschreibung bei Dateinamen bei, unterscheidet aber immer noch nicht dazwischen.

MfG Peter(TOO)

Siro
01.12.2014, 21:24
Erstmal Danke für die "guten" Infos.
Die Herkunft der Dateiendung von UNIX war mir nicht klar, da ich mit DOS/Windows aufgewachsen bin.
Okay das habe ich jetzt begriffen und werde fortan kleine Anhängsel verwenden.
Großes "C" ist dann für C++ Sourcen wenn ich das richtig verstanden habe.
Na dann kann ich endlich mit LPCXpresso richtig loslegen.
Bin gespannt wie es läuft mit dem LPCLink Modul. Preiswerter gehts kaum....
Hat mich eine Woche Sucherei gekostet, warum das nicht ging.

Siro

Peter(TOO)
01.12.2014, 21:41
Hallo Siro,

Die Herkunft der Dateiendung von UNIX war mir nicht klar, da ich mit DOS/Windows aufgewachsen bin.

Unix ist etwa 10 Jahre älter als MS-DOS.


Großes "C" ist dann für C++ Sourcen wenn ich das richtig verstanden habe.
Nein da verwendet man eigentlich .cpp und .hpp
pp = Plus Plus = ++ (Viele Betriebssysteme erlauben nur Buchstaben und Ziffern n Dateinamen)

Wie schon geschrieben wurde, DOS und Windows können c nicht von C unterscheiden!

MfG Peter(TOO)

i_make_it
02.12.2014, 08:20
Die Unterscheidung zwichen Groß- und Kleinbuchstaben geht noch weiter zurück wie UNIX. für die Zeichenkodierung hat man bei Computern den ASCII Zeichensatz des Telex Systems übernommen und sowohl beim ASCII, dem neueren ANSI als auch bei Unicode werden Großbuchstaben und Kleinbuchstaben halt mit anderen Bitfolgen codiert. Und Comuter ferstehen halt nun mal nur Nullen und Einsen. Damit sind ein "c", ein "C" oder auch ein "h" und ein "H" grundverschiedene Zeichen. und eine Sysntaxkontrolle kann man strikt oder auch für Variantenerkennung programmieren. Strikt ist halt weniger Code und somit gibt es IDE die nur "c" und "h" akzeptieren und Systeme die klein und Großbuchstsaben akzeptieren. Am sichersten ist man wenn man der alten Acht-Punkt-Drei (8.3) Notation folgt und immer alles klein schreibt. Google mal ASCII Tabelle und ANSI Tabelle spätestens bei den Umlauten (Ä,Ö,Ü,ä,ö,ü und ß) wird es ganz lustig. Das Alphabet "A-Z und a-z" haben bei ASCII und ANSI ja noch die selbe Codierung aber Sonderzeichen wie Umlaute halt nicht.
Das vergessen heute viele Programmierer grade bei modernen Systemen ie SAP R3 wenn sie Daten aus älteren Mainframes übernehmen wollen.
(Komisch im Test mit den 1000 Testdatensätzen hat alles geklappt, aber jetzt hat es die Personaldaten von "Müller" nicht übernommen.)
Übrigens einer der Gründe, warum man auf vielen Formularen AE, OE, UE und SS schreiben soll anstelle richtig Ä,Ö,Ü und ß.
Verunstaltung der deutschen Sprache um ein paar Euro beim Programmierer zu sparen.

Mxt
02.12.2014, 08:42
Nein da verwendet man eigentlich .cpp und .hpp
pp = Plus Plus = ++ (Viele Betriebssysteme erlauben nur Buchstaben und Ziffern n Dateinamen)

Das hat sich mittlerweile auch unter UNIX etabliert, nicht zuletzt dank Bibliotheken wie Boost.

Aber auf älteren UNIX Rechnern, bei mir waren es SUN Workstations mit Motorola 68040 Prozessor, hieß sogar der C-Compliler cc und der C++ Compiler CC. Entsprechend dann die Quelldateien .c bzw. .C .

HaWe
02.12.2014, 09:56
nicht zu vergessen, dass C überhaupt nur entwickelt wurde (von Kernighan + Ritchie), um damit ein neues, multitasking-multiuser-Betriebssystem programmieren zu können, nämlich Unix.
Daher finden sich ntl alle C-Eigenheiten auch in Unix wieder. 8-)

Siro
02.12.2014, 11:57
Ich bin immer wieder erstaunt über das Wissen der Mitglieder hier.
Echt super und Danke für Eure Beiträge.

Die Endungen .cpp sind mir schon untergekommen.
Das finde ich auch sehr sinnvoll. Ein "+" ist ja in DOS Dateinamen verboten soweit ich weis.
Ich benutze auch kein "-" in Dateinamen, da nehme ich lieber einen _ Unterstrich,
der war seit jeher erlaubt, zumindest unter DOS:

Die Umlaute sind bei mir eh gestorben, ich weis garnicht ob sie erlaubt sind in C, ich glaube nicht
Die Ascii Tabelle war ja nur bis 0x7F genormt (also 7 Bit), dann gabs diverse Sonderzeichen.

Na wie dem auch sei. Das große "C" werd ich dann "Conrad" überlassen :)
Ich hab jetzt mein LPCXpresso tatsächlich am Laufen und kann nur sagen, funktioniert super, zumindest bisher mit dem LPC1768.

Siro

Peter(TOO)
02.12.2014, 16:49
Hallo Siro,

Ich bin immer wieder erstaunt über das Wissen der Mitglieder hier.

Das ist der Vorteil einer durchmischten Gruppe.

Ich bin einer der alten Säcke (57) hier und habe immer in der Elektronikentwicklung gearbeitet.
So mit 9 Jahren habe ich meine ersten Transistor-Radios gebastelt und ab 1972 durfte ich bei meinem Onkel, auf einem Wang 2200 VP Computer, Klingonen abschiessen ;-)
Ab 1976 musste ich dann den 6502 in Assembler programmieren .....
In de Zeit bis heute habe ich viele Programmiersprachen gelernt und auch viele Betriebssysteme kennen gelernt.

Und jetzt versuche ich einen Teil meines Wissens weiter zu geben....


Die Umlaute sind bei mir eh gestorben, ich weis garnicht ob sie erlaubt sind in C, ich glaube nicht
Die Ascii Tabelle war ja nur bis 0x7F genormt (also 7 Bit), dann gabs diverse Sonderzeichen.
Ach, das war noch viel schlimmer!
Anfänglich gab's nur die 7-Bit! Die Deutschen Umlaute wurden dann in einer DIN-Norm auf die Zeichen für [,],{ und } gelegt. Wenn man dann ein Listing ausgedruckt hat, kamen da ä und ö bei im Ausdruck :-(
Irgendwie hatte das keiner mit den Umlauten im Griff, selbst Listings in Zeitschriften wurden öfters so abgedruckt.
Man musste immer den Drucker umschalten, je nachdem ob man einen Brief oder ein Listing drucken wollte. Bei manchen Druckern ging das aber nur über Mäuseklaviere.

Mit dem IBM-PC fand dann der erweiterte ASCII-Code, mit 8-Bit und den Zeichen für Klötzchengraphik und Rähmchen, Verbreitung.

Bei C kommt es auf den Compiler an, ob er Umlaute mag oder nicht. Der gemeinsame Nenner ist aber immer noch 7-Bit ASCI.
Und bei den Dateinamen ist das so ähnlich: Zuerst einmal muss es das Betriebssystem zulassen und dann muss auch noch der Compiler damit umgehen können.

Ohne Umlaute ist man auf jeden Fall auf der sicheren Seite!

MfG Peter(TOO)

Siro
04.12.2014, 10:54
Ab 1976 musste ich dann den 6502 in Assembler (http://www.rn-wissen.de/index.php/AVR_Assembler_Einf%C3%BChrung) programmieren .....

Muste klingt so negativ Peter ;). Ich liebte es den 6502 in Assembler zu programmieren. Das war mein Erster im Commodore VC-20.
Das waren wohl damals meine längsten Nächte überhaupt....

Die Klötzchengrafik fand ich auch super. Rahmen zeichnen, eine primitive Fenstergrafik usw. und dann alles auf eine Datasette speichern.
(für die jüngeren Mitglieder: Das war ein Kasettenlaufwerk.....:).)
Das es da schon "C" gab wuste ich garnicht. Erstmal Basic, dann Assembler, PLM80/Pascal/Modula/Delphi und nun bin ich auch bei "C" angekommen.
Siro

Ein bischen Offtopic darf auch mal sein, Thread ist ja als "Erledigt" markiert. Man vergebe mir.

Peter(TOO)
04.12.2014, 13:30
Hallo,

Muste klingt so negativ Peter ;). Ich liebte es den 6502 in Assembler zu programmieren. Das war mein Erster im Commodore VC-20.
Das waren wohl damals meine längsten Nächte überhaupt....

War bei mir ein KIM-1.
Assemblieren von Hand auf Papier, eintippen per HEX und dann auf einen normalen ITT-Casettenrecorder speichern.

War ein Testprogramm für eine Platine mit 2x 65320 RRIOT.

Und das MUSS war, weil am 21. September 1976 gegen Abend noch zwei Herren neben mir sassen welche 100 Platinen testen wollten und zu Hause meine Mutter und Schwester mit dem Essen warteten, weil meine Schwester Geburtstag hatte.

So 14 Tage vorher wurde ich einfach ins kalte Wasser geworfen, da ist der KIM und jetzt mach mal schnell. War mein erstes Programm und Hardware Interface zu dieser zu testenden Platine.

Als erstes habe ich dann schnell BASIC gelernt und ein paar Wochen später einen Cross-Assembler bei meinem Onkel auf dem Wang geschrieben.
War nur ein einfacher Zeilen-Assembler ohne Labels in der ersten Version.
Mit Papier und Bleistift Assemblieren war mir etwas zu mühsam ;-)

Macht aber auch heute immer noch Spass.

Nach dem KIM kam dann eine S-100 Bus CP/M Maschine, mit CP/M V1.4 und C-BASIC, anfangs mit einem 8080 von NEC, der hatte ein paar Befehle mehr als der 8080 von Intel und später war dann ein Z80 drin.

Wenn man den Speicher erweiterte, musste man bei CP/M 1.4 noch das BIOS auf die neue Adresse Assemblieren, den OS-Teil mit einem Tool für die neue Adresslage generieren und alles zusammen kopieren.
Der "Bootloader" befand sich in einem 32-Byte (256 Bit!) Bipolar PROM. Entweder meldete sich der Boot-Loader von CM/P oder es tat sich einfach nichts, für eine Fehlermeldung waren in den 32 Byte kein Platz. ;-)

MfG Peter(TOO)