Forum: PC-Programmierung C Neuling benötigt Schubs in die richtige Richtung


von Torsten K. (Firma: TOKA) (avantasia)


Angehängte Dateien:

Lesenswert?

Einen schönen guten Abend,

ich bin absoluter C Neuling und versuche mich gerade mit dem Buch

"C programmieren lernen für dummies" von Dan Gookin einzuarbeiten. Daher 
bitte ich um Nachsicht für meine sicherlich triviale Frage.

Ich habe folgendes kleines Programm, unter Nutzung von CodeBlocks, 
erstellt:

--------------------
#include <stdio.h>

main()
{
char txtstr[5];
strcpy(txtstr, "100°C");
printf (txtstr);
return(0);
}
--------------------

Das funktioniert soweit auch bis auf die Tatsache, das das ° Zeichen 
nicht als solches ausgegeben wird sondern ersatzweise zwei Sonderzeichen 
auf der Konsole abgebildet werden (siehe Screenshoot). Nun habe ich 
gelesen, das es zum einen daran liegen kann, dass die Codepages nicht 
übereinstimmen, aber daß man eine Ausgabe unter Zuhilfenahme des 
Hexcodes der Codepage erreichen kann. Beispiel unter der Codepage 437 
wäre das "°" Zeichen als 0xF8 zu erreichen.

Nehmen wir mal an, das Programm sollte unter verschiedenen Codepages 
laufen. Wie bekommt man es hin, dass der notwendige Hexcode in den 
auszugebenden Textstring "integriert" wird.

Wäre schön wenn mir da jemand die Augen öffnen könnte.

Danke

Torsten

: Gesperrt durch Moderator
von Walter T. (nicolas)


Lesenswert?

Torsten K. schrieb:
> Daher
> bitte ich um Nachsicht für meine sicherlich triviale Frage.

Leider ist diese Frage alles andere als trivial und hat schon 
Generationen von Softwareentwicklern zur Verzweiflung getrieben. 
Wahrscheinlich geht ein Anfängerbuch gar nicht so weit, daß das Thema 
irgendwann geklärt wird.

Tipp für den Anfang: Das Problem zurückstellen. Tipp für später (unter 
Windows: Stichwort "wchar".

Viele Grüße
W.T.

von Walter T. (nicolas)


Lesenswert?

Und weil offene Klammern Programmierer immer nervös machen:

)

Beitrag #5704358 wurde von einem Moderator gelöscht.
Beitrag #5704364 wurde von einem Moderator gelöscht.
von . . (Gast)


Lesenswert?

Zusätzlich ist "char txtstr[5]" zu klein für den String.

von . . (Gast)


Lesenswert?

Und versuch mal mit 0xB0.

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

.                                                . schrieb im Beitrag 
#5704378:
> Zusätzlich ist "char txtstr[5]" zu klein für den String.

Warum ist "char txtstr[5]" zu klein ?  100°C  sind 5 Zeichen oder irre 
ich?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Torsten K. schrieb:
> Nun habe ich gelesen, das es zum einen daran liegen kann, dass die
> Codepages nicht übereinstimmen, aber daß man eine Ausgabe unter
> Zuhilfenahme des Hexcodes der Codepage erreichen kann.

Hast du auch diesen Thread hier

  Beitrag "Char als Klartext im Quellcode ©"

gefunden? Da steht ziemlich viel Information zu dem Thema, ich bin jetzt
nur zu faul, die für dich relevanten Beiträge herauszupicken.

> Nehmen wir mal an, das Programm sollte unter verschiedenen Codepages
> laufen.

Man kann unter bestimmten Voraussetzungen die im Ausgabemedium
verwendete Zeichenkodierung abfragen, um dann im eigenen Programm eine
passende Konvertierung durchzuführen. Das ist aber nicht ganz einfach,
und ich weiß auch nicht auswendig, wie das geht, schon gar nicht unter
Windows.

Da du aber ein "absoluter C Neuling" bist, würde ich mich vorerst mit
wichtigeren und grundlegenderen Dingen beschäftigen, bspw. damit:

Strings in C haben immer ein NUL-Zeichen als Endekennung, was bei der
Dimensionierung von char[]-Variablen berücksichtigt werden muss. Tut man
dies nicht, droht Böses, weil über das Ende der Variable hinaus
geschrieben wird. "100°C" hat 5 Zeichen, weswegen textstr mindestens mit
[6] dimensioniert werden muss. Tatsächlich müssen es sogar [7] sein,
weil '°' in der von Code::Blocks verwendeten UTF-8-Kodierung 2 Bytes
belegt.

Übrigens kann man mit strncpy statt strcpy die Anzahl der kopierten
Bytes begrenzen, womit der Überlauf vermieden und ein möglicher Fehler
leichter erkannt wird.

von foobar (Gast)


Lesenswert?

Von den Zeichenkodierungen abgesehen:
1
char txtstr[5];
2
strcpy(txtstr, "100°C");

txtstr hat Platz für 5 Bytes, deine Stringkonstante ist aber länger, je 
nach nach Codepage 5 oder mehr Bytes für die Zeichen an sich plus 1 Byte 
für den 0-Terminator. Der strcpy schreibt also über das Ende des 
txtstr-Arrays hinaus. Dass es keinen Programmabsturz gibt, ist mehr oder 
weniger Zufall ...

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Danke Yalu...

das mit dem String und Deiner Erklärung ist schon mal Klasse... dann 
macht auch der Satz des vorherigen Posts Sinn.

Denn Link schaue ich mir mal an...

von rbx (Gast)


Lesenswert?

Also die Stichworte wären u.a.

Escape-Sequenzen
Hexcode
Tabellen ( wie https://de.wikipedia.org/wiki/Codepage_850 )
Steuerzeichen und Schriftzeichen
Alte Assemblerbücher (mit guten Nachschlagetabellen)

(und weiter oben "Stack Overflow" (oder so..)
(https://stackoverflow.com)

von foobar (Gast)


Lesenswert?

> Übrigens kann man mit strncpy statt strcpy die Anzahl der kopierten
> Bytes begrenzen, womit der Überlauf vermieden und ein möglicher Fehler
> leichter erkannt wird.

Kein guter Rat. Der Nutzen von strncpy ist ziemlich zweifelhaft[1], da 
er den Zielbuffer nicht immer mit einer 0 terminiert - das Ergebnis ist 
kein gülter C-String und andere Routinen, die einen solchen erwarten 
(wie z.B. der printf), lesen über den Buffer hinaus, was ebenfalls 
falsch ist. Außerdem füllt strncpy den nichtgenutzen Bereich des Buffers 
unnötigerweise mit Nullen.


[1] war ursprünglich designed, um Festbreitenfelder in Datei-Records zu 
füllen.

von Dirk B. (dirkb2)


Lesenswert?

foobar schrieb:
> [1] war ursprünglich designed, um Festbreitenfelder in Datei-Records zu
> füllen.

Ahh, danke.

von Nano (Gast)


Lesenswert?

Vor main gehört meiner Meinung nach noch ein int, immerhin lieferst du 
mit return 0 einen Rückgabetyp zurück. Die klammern um die 0 kannst du 
hier weglassen.

von Dirk B. (dirkb2)


Lesenswert?

Yalu X. schrieb:
> Strings in C haben immer ein NUL-Zeichen als Endekennung, was bei der
> Dimensionierung von char[]-Variablen berücksichtigt werden muss.

@Torsten, wenn dies nicht in dem Buch behandelt wird, ist es Mist.

von Nano (Gast)


Lesenswert?

Außerdem würde ich in der printf Anweisung noch ein "\n" einbauen.
Die IDE mag zwar ihren eigenen Text in eine neue Zeile setzen, aber in 
der Kommandozeile ist das nicht mehr der Fall.

von Yalu X. (yalu) (Moderator)


Lesenswert?

foobar schrieb:
>> Übrigens kann man mit strncpy statt strcpy die Anzahl der kopierten
>> Bytes begrenzen, womit der Überlauf vermieden und ein möglicher Fehler
>> leichter erkannt wird.
>
> Kein guter Rat. Der Nutzen von strncpy ist ziemlich zweifelhaft[1], da
> er den Zielbuffer nicht immer mit einer 0 terminiert

Du hast recht, und ich ziehe hiermit meinen Tipp zurück.

strncpy verhindert zwar einen Überlauf beim Schreiben, aber danach
entstehen neue Probleme. Das war mir nicht (mehr) bewusst als ich den
obigen Beitrag schrieb.

PS: Wenn ich ahne, dass ich in einem Programm eine der Funktionen
strcpy, strncpy, strcat oder strncat benötigen werde, wechsle ich meist
schon vorher die Programmiersprache ;-)

von Fazit (Gast)


Lesenswert?

Der Eindruck verfestigt sich: Es ist für eine einzelne Person unmöglich, 
ein funktionierendes C-Programm zu schreiben. Zu viele Fallstricke und 
Unwägbarkeiten, als daß sie noch von einer einzogen Person überblickt 
werden könnten.

von Rolf M. (rmagnus)


Lesenswert?

Stringhandling war noch nie die Stärke von C.

von Carl D. (jcw2)


Lesenswert?

Fazit schrieb:
> Der Eindruck verfestigt sich: Es ist für eine einzelne Person unmöglich,
> ein funktionierendes C-Programm zu schreiben. Zu viele Fallstricke und
> Unwägbarkeiten, als daß sie noch von einer einzogen Person überblickt
> werden könnten.

Es gibt auch Personen, die deutlich weniger als C brauchen, um den 
Überblick zu verlieren.

von Dirk B. (dirkb2)


Lesenswert?

Fazit schrieb:
> Zu viele Fallstricke und
> Unwägbarkeiten, als daß sie noch von einer einzogen Person überblickt
> werden könnten.

So viele sind das nicht. Das ist das schöne an C.

Und man kann sich auch eigene Stringfunktionen schreiben, die mehr 
Sicherheit bieten.
Dann tauscht man Schnelligkeit gegen Sicherheit.

In C hat man die Wahl.

von vn nn (Gast)


Lesenswert?

ImZweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und 
Geschwindigkeit.

von Nano (Gast)


Lesenswert?

vn nn schrieb:
> ImZweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und
> Geschwindigkeit.

Im Zweifel nimmt man Rust.

Wer sich mit C ins Knie schießt, der wird das auch mit C++ tun.

von zitter_ned_aso (Gast)


Lesenswert?

Nano schrieb:
> Im Zweifel nimmt man Rust.
>
> Wer sich mit C ins Knie schießt, der wird das auch mit C++ tun.

Darum kam doch Java raus oder? Damit man sich das Bein mit C++ nicht 
wegschießt.


Jetzt wird Rust alle Probleme lösen? Irgendwie schießen jetzt neue 
Programmiersprachen wie die Pilze aus dem Boden.

von Nano (Gast)


Lesenswert?

zitter_ned_aso schrieb:
> Darum kam doch Java raus oder? Damit man sich das Bein mit C++ nicht
> wegschießt.

Java war nie für die Systemprogrammierung gedacht und kann das auf 
normaler Hardware auch gar nicht.
Daher konnte es C und C++ auch nie ersetzen und das war auch nie 
geplant.
Bei Rust sieht das komplett anders aus, damit könntest du auch einen 
Betriebssystemkernel programmieren.
Damit ist Rust eine theoretisch ernstzunehmende Alternative zu C und 
C++. Theoretisch deswegen, weil noch einiges vom Drumherum fehlt und es 
auch von der Marktakzeptanz abhängig ist, und wie sich das entwickelt 
kann nur die Zeit zeigen. Von der Sprache selbst aber steht dem nichts 
im Weg.

von Theor (Gast)


Lesenswert?

Yalu X. schrieb:

[...]

> PS: Wenn ich ahne, dass ich in einem Programm eine der Funktionen
> strcpy, strncpy, strcat oder strncat benötigen werde, wechsle ich meist
> schon vorher die Programmiersprache ;-)

Das wüsste ich ja zu gerne, welche das ist. :-)

von Rolf M. (rmagnus)


Lesenswert?

zitter_ned_aso schrieb:
> Jetzt wird Rust alle Probleme lösen? Irgendwie schießen jetzt neue
> Programmiersprachen wie die Pilze aus dem Boden.

Das gab's doch eigentlich immer schon. Es gibt Modesprachen, die 
plötzlich "aus dem Boden" schießen und alle Probleme lösen wollen, und 
es gibt die bewährten Sprachen, die sich über Jahrzehnte halten und auch 
noch da sind, wenn die neueste Modesprache schon wieder verwelkt ist.

von Dirk B. (dirkb2)


Lesenswert?

Es gibt seit C11 (also seit ca, 8 Jahren) die Funktion strcpy_s im 
Standard. Oder noch besser strncpy_s

Achtung:  strcpy_s ergibt einen Leerstring, wenn die Quelle nicht ins 
Ziel passt
strncpy_s kopiert noch eine '\0' ans Ende vom Ziel, wenn Platz ist.

Da gibt es noch mehr Funktionen, die einen Pufferüberlauf verhindern 
können.



Wenn man weiß was man tut, ist C in Ordnung.

Aber wer weiß das  schon.

: Bearbeitet durch User
von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Yalu X. schrieb:
> Hast du auch diesen Thread hier
>
>   Beitrag "Char als Klartext im Quellcode ©"

Leider ist da nicht wirklich das Problem gelöst worden. Danke erstmal 
für die ansonsten fachlichen Beiträge. Ich würde gerne drum bitten, beim 
Thema zu bleiben. Die letzten Post streifen doch sehr weit ab. Ich denke 
wenn ich das hier so lese, das meine Anfrage auch für andere Benutzer 
durchaus interessant ist, sofern sich eine sagen wir mal vorsichtig, 
allgemein gültige Lösung finden lassen würde. Denn so wie ich es bis 
jetzt verstanden habe gibt es die wohl nicht oder ich interpretiere da 
etwas falsch.

Es sollte doch grundsätzlich möglich sein, Sonderzeichen in einem Strin 
ausgeben zu können ohne sich all zu sehr zu verbiegen. Aber vielleicht 
ist C dafür die falsche Programmiersprache was ich aber eigentlich nicht 
glauben will.

Auch wenn ich erst Anfänger bin, wäre es für mich wichtig zu wissen, wie 
ich einen ich sage jetzt mal aus meiner Sicht einfachen String 
fehlerfrei zur Ausgabe bringe.

Danke für sach- und fachdienliche Hinweise.

Gruß Torsten

Nachtrag: auch wenn ich CodeBlocks verwende, so wird dort von mir der 
GNU GCC Compiler genutzt.

: Bearbeitet durch User
von Vn N. (wefwef_s)


Lesenswert?

Nano schrieb:
> Wer sich mit C ins Knie schießt, der wird das auch mit C++ tun.

Kannst du dies näher erläutern? Um beim Beispiel des Threads zu bleiben, 
klassische Probleme mit zu kurzen Strings oder Array-off-by-one sind in 
modernem C++ so ziemlich komplett eliminiert, weshalb die Sprache gerade 
für Anfänger ja auch viel einfacher ist. Man muss nicht erst kapieren, 
wie ein String intern aufgebaut ist, um ihn zu verwenden, hat aber im 
Hintergrund trotzdem auch sämtliche Möglichkeiten offen.
Wer natürlich bloß einen C++-Compiler verwendet, aber trotzdem weiterhin 
C programmiert, wird sich auch weiterhin ins Knie schießen.

Aber ja, Rust könnte sich durchaus zu einer ernstzunehmenden Alternative 
entwickeln.

von Christoph O. (lichtstrahl)


Lesenswert?

Zumindest für den eingangs beschriebenen Fall
kann die Länge des Strings auch vom Compiler bestimmt werden:
1
char txtstr[] = "100°C\n\0";

Meine ich zumindest, hab es grad nicht getestet.
Dies unterliegt aber natürlich weiterhin den Einschränkungen,
die in diesem Thread schon angemerkt wurden.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Torsten K. schrieb:
> Leider ist da nicht wirklich das Problem gelöst worden.

Welches Problem genau? Von einem mit Code::Blocks geschriebenen
C-Programm auf einer Konsole mit Codepage 437 ein "°" auszugeben?

Eine – wenn auch nicht besonders schöne – Möglichkeit besteht darin,
direkt den Zeichencode (hier F8) zu verwenden. Statt "100°C" schreibst
du dann entweder

  "100\370C"     (oktal)

oder

  "100\xF8""C"   (hexadezimal)

Die beiden "" im zweiten Beispiel verhindern, dass das "C" als dritte
Hexadezimalziffer interpretiert wird.

Um den Quellcode leserlicher zu halten, kannst du den Compiler mit der
Option

  -fexec-charset=cp437

anweisen, im Quellcode enthaltene String- und Char-Literale automatisch
nach Codepage 437 zu konvertieren. Dann darfst du den String wie gewohnt
als "100°C" schreiben.

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Hallo Yalu,

lieben Dank... das probiere ich gleich mal aus. Etwas ähnliches hatte 
ich heute Nacht in einem alten C Buch von Kernighan/Ritchie gelesen. Mir 
war nicht klar das Strings in der von Dir beschriebenen zweiten Weise 
zusammen gesetzt werden können.

Danke

von Arno (Gast)


Lesenswert?

Christoph O. schrieb:
> Zumindest für den eingangs beschriebenen Fall
> kann die Länge des Strings auch vom Compiler bestimmt werden:
> char txtstr[] = "100°C\n\0";
> Meine ich zumindest, hab es grad nicht getestet.

Die \0 am Ende kannst du dir in dem Fall sparen, die hängt der Compiler 
automatisch an. Großer Vorteil dieser Deklaration :)

MfG, Arno

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Super... der Hinweis von Yalu funktioniert... mehr wollte ich ja erstmal 
nicht. Lieben Dank für alle gegebenen Hinweise.

Gruß Torsten

von Christoph O. (lichtstrahl)


Lesenswert?

Arno schrieb:
> Die \0 am Ende kannst du dir in dem Fall sparen, die hängt der Compiler
> automatisch an. Großer Vorteil dieser Deklaration :)

Danke für den Hinweis,
wieder was gelernt :-)

von Nano (Gast)


Lesenswert?

Meiner Meinung nach wäre es aber dennoch besser, gleich den Umgang mit 
UTF-8 zu lernen.
Die alten Codepages sind eigentlich nicht mehr zeitgemäß und werden nie 
besonders schön aussehen, wenn eine andere Codepage verwendet wird, als 
die, für die das Programm compiliert wurde.

von rbx (Gast)


Lesenswert?

rbx schrieb:
> Alte Assemblerbücher (mit guten Nachschlagetabellen)

Muss gar kein Assemblerbuch sein, das bekommt man u.U. auch gar nicht so 
schnell.
(gemeint war auch konkret "Programmiersprache Assembler. Eine 
strukturierte Einführung" von Reiner Backer mit seinen nützlichen 
Tabellen.)
In dem C-Buch vom Erlenkötter sind die entsprechenden Tabellen für die 
Frage oben auch im Anhang.

von S. B. (piezokristall)


Lesenswert?

> Java war nie für die Systemprogrammierung gedacht und kann das auf
> normaler Hardware auch gar nicht.
> Daher konnte es C und C++ auch nie ersetzen und das war auch nie
> geplant.
Java war als systemübergreifende bzw. plattformübergreifende 
Programmiersprache konzipiert, um C oder C++ Programme eben nicht auf 
einem anderen System neu schreiben zu müssen.

> ImZweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und
> Geschwindigkeit.
totaler Blödsinn; C++ ist eine Obermenge von C und deshalb gleich 
schnell oder eben langsamer - das merkt man aber erst auf alten Rechnern 
und bei größeren Programmen.
Auch in Puncto Sicherheit gibt es bessere Alternativen, nämlich ADA, das 
im u.a. im Militärbereich verwandt wird.
C++ hat sich wegen u.a. wegen bunter Windows-Fenster, der besseren IDE, 
etc. durchgesetzt; insbesondere Fenstertechnik und graphische 
Oberflächen funktionierte mit C zur damaligen Zeit praktisch nicht.

von S. B. (piezokristall)


Lesenswert?

statt 100°C schreibst Du notfalls 100 Grad Celsius und schon ist das 
Problem gelöst - primitiv, aber auch primitive Lösungen sind am Ende 
Lösungen; es geht um Improvisation und das können/wollen die meisten 
heute leider nicht mehr, weil jeder unbedingt mit dem Kopf durch die 
Wand will.

von foobar (Gast)


Lesenswert?

> der Hinweis von Yalu funktioniert... mehr wollte ich ja erstmal
> nicht.

Nicht wirklich. Dein Wunsch war: "das Programm sollte unter 
verschiedenen Codepages laufen." Schalt doch mal auf z.B. russisch um 
(CP878), da bekommst du dann statt des ° nun ein Ь - das ° liegt dort 
auf 0x9c.

Wie die erste Antwort schon sagte: "Leider ist diese Frage alles andere 
als trivial und hat schon Generationen von Softwareentwicklern zur 
Verzweiflung getrieben."  Mit UTF-8 wurde es dann einfacher und die 
meisten Betriebssysteme haben darauf umgestellt - Microsoft ist immer 
noch am flicken und hat dabei ziemliches Chaos angerichtet (richtig 
lustig wird's, wenn du es mit Dateinamen zu tun bekommst) ...

von S. B. (piezokristall)


Lesenswert?

> Nicht wirklich. Dein Wunsch war: "das Programm sollte unter
> verschiedenen Codepages laufen." Schalt doch mal auf z.B. russisch um
> (CP878), da bekommst du dann statt des ° nun ein Ь - das ° liegt dort
> auf 0x9c.
>
> Wie die erste Antwort schon sagte: "Leider ist diese Frage alles andere
> als trivial und hat schon Generationen von Softwareentwicklern zur
> Verzweiflung getrieben."
das Problem ist, daß CodeBlocks unter Windows nicht ganz ANSI-conform zu 
sein scheint - ich bekomme sofort eine Fehlermeldung, weil die 
Headerdatei string.h fehlt, usw.
Hier meine Lösung:


#include <stdio.h>
#include <string.h>

int main(void)
{
char txtstr[10];
strcpy(txtstr, "100°C");
printf("\n%s\n",txtstr);
}

von Nano (Gast)


Lesenswert?

S. B. schrieb:
>> Java war nie für die Systemprogrammierung gedacht und kann das auf
>> normaler Hardware auch gar nicht.
>> Daher konnte es C und C++ auch nie ersetzen und das war auch nie
>> geplant.
> Java war als systemübergreifende bzw. plattformübergreifende
> Programmiersprache konzipiert, um C oder C++ Programme eben nicht auf
> einem anderen System neu schreiben zu müssen.

Java ist keine Sprache für die Systemprogrammierung. Punkt.
Guck nach was Systemprogrammierung bedeutet. Anwendungsprogrammierung 
ist keine Systemprogrammierung.

Es hat einen Garbage Collector, eine Runtimeumgebung und Bytecode und 
ist auch nicht Echtzeitfähig, das sind alles Dinge, die es nicht für 
einen Kernel geeignet machen.

Mit C, C++ und Rust kannt du einen Kernel aber sehr wohl programmieren.

von S. B. (piezokristall)


Lesenswert?

> Java ist keine Sprache für die Systemprogrammierung. Punkt.
> Guck nach was Systemprogrammierung bedeutet. Anwendungsprogrammierung
> ist keine Systemprogrammierung.
Hast Du meinen obigen Post nicht gelesen oder nicht verstanden ?!
Nochmal als Wiederholung:
Java ist eingeführt worden, um unabhängig von der Plattform bzw. dem 
jeweiligen Betriebssystem des Rechners programmieren zu können. Punkt!

von Nano (Gast)


Lesenswert?

foobar schrieb:
> Mit UTF-8 wurde es dann einfacher und die
> meisten Betriebssysteme haben darauf umgestellt - Microsoft ist immer
> noch am flicken und hat dabei ziemliches Chaos angerichtet (richtig
> lustig wird's, wenn du es mit Dateinamen zu tun bekommst) ...

Man kann das jetzt allerdings nicht Microsoft vorwerfen.

Viele wollen in der Eingabeaufforderung "cmd.exe" noch ihre alten 
Textgui Anwendungen laufen lassen, wie man sie von edit.exe oder Turbo 
Pascal 6 her kannte.
Die ganzen Rahmen und Rahmenzeichen liegen in den länderspezifischen 
Codepages alle in der höheren 128 Bit Ebene so eines 1 Byte großen 
Zeichens und bei UTF-8 sind die ganz woanders.
Man denke da bspw. an das UTF-8 Zeichen U+2566, welches in Codepage 850 
unter 0xCB zu finden ist.

https://de.wikipedia.org/wiki/Codepage_850
https://de.wikipedia.org/wiki/Rahmenzeichen

Würde man die Eingabeaufforderung auf UTF-8 umstellen, dann würde dieses 
Rahmenzeichen als solches nicht mehr dargestellt werden und die 
Abwärtskompatibilität flöten gehen.
Das gleiche gilt für länderspezifische Buchstaben.

Da Microsoft aber schlecht die Software von Drittsoftwareherstellern 
ändern kann, bleibt es bei den üblichen Codepages zwecks 
Abwärtskompatibilität.
Ein Vorwurf an Microsoft ist daher nicht gerechtfertigt.

Fairer wäre, wenn man in der Powershell nachschauen würde, wie es da 
gelöst ist.

von Nano (Gast)


Lesenswert?

S. B. schrieb:
>> Java ist keine Sprache für die Systemprogrammierung. Punkt.
>> Guck nach was Systemprogrammierung bedeutet. Anwendungsprogrammierung
>> ist keine Systemprogrammierung.
> Hast Du meinen obigen Post nicht gelesen oder nicht verstanden ?!
> Nochmal als Wiederholung:
> Java ist eingeführt worden, um unabhängig von der Plattform bzw. dem
> jeweiligen Betriebssystem des Rechners programmieren zu können. Punkt!

Entscheidend ist doch folgendes, widersprichst du mir jetzt oder 
widerspricht du mir nicht?
Wenn du mir nicht widersprichst, was willst du mir dann sagen?
Wofür Java gemacht wurde, weiß ich nämlich selber, aber der Kontext ist 
das was zitter_ned_so oben gesagt hat.

Siehe nochmal mein Kommentar auf seine Aussage:
Beitrag "Re: C Neuling benötigt Schubs in die richtige Richtung"

Sowie hier seine Aussage:
Beitrag "Re: C Neuling benötigt Schubs in die richtige Richtung"

von Dirk B. (dirkb2)


Lesenswert?

S. B. schrieb:
> das Problem ist, daß CodeBlocks unter Windows nicht ganz ANSI-conform zu
> sein scheint - ich bekomme sofort eine Fehlermeldung, weil die
> Headerdatei string.h fehlt, usw.

Das hängt auch von den Compileroptionen ab.
Oder waren es "nur" Warnungen?

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

S. B. schrieb:
> das Problem ist, daß CodeBlocks unter Windows nicht ganz ANSI-conform zu
> sein scheint - ich bekomme sofort eine Fehlermeldung, weil die
> Headerdatei string.h fehlt, usw.
> Hier meine Lösung:
>
> #include <stdio.h>
> #include <string.h>
>
> int main(void)
> {
> char txtstr[10];
> strcpy(txtstr, "100°C");
> printf("\n%s\n",txtstr);
> }

Also folgender Code läuft bei mir unter Nutzung des GNU GCC Compilers in 
CodeBlocks jetzt ohne Probleme

#include <stdio.h>

int main()
{
char txtstr[7];
strcpy(txtstr, "100\xF8""C");
printf (txtstr);
return(0);
}

von Wolfgang S. (ws01)


Lesenswert?

Nano schrieb:
> zitter_ned_aso schrieb:
>> Darum kam doch Java raus oder? Damit man sich das Bein mit C++ nicht
>> wegschießt.
>
> Java war nie für die Systemprogrammierung gedacht und kann das auf
> normaler Hardware auch gar nicht.

Falsch. Java hieß ursprünglich Oak und war genau dafür gedacht, als 
Alternative zu C++ [1] [2]

Sowohl der Fokuswechsel - zunächst auf Applets im Web, später für 
diverse andere Verwendungen - kam erst später, weil sich der 
ursprüngliche Projektplan zerschlagen hatte. Der Namenswechsel von Oak 
zu Java war i.W. durch markenrechtliche Problem begründet. [3]



> Daher konnte es C und C++ auch nie ersetzen und das war auch nie
> geplant.

Doch, genau dafür war die Sprache und anfängliche Implementierung 
explizit vorgesehen und wurde auch genau dafür benutzt.

> Bei Rust sieht das komplett anders aus, damit könntest du auch einen
> Betriebssystemkernel programmieren.

Das geht mit Sprachen, die wie Oak oder Java zunächst eine Übersetzung 
in Bytecode vorsehen, ebenfalls, das Verfahren ist lediglich anders als 
man es üblicherweise mit C/C++ tut.  Ein einschlägiges Verfahren besteht 
darin, den Bytecodeiinterpreter bzw Compiler in der jeweiligen Sprache 
selber zu implementieren. Ich habe so etwas auch schon mal gemacht, 
laange bevor Java - oder Oak - überhaupt existierte.

Im übrigen ist es ein gängiger Irrtum, Systemprogrammierung auf die 
Programmierung von Betriebssystemkernen zu reduzieren.

> Damit ist Rust eine theoretisch ernstzunehmende Alternative zu C und
> C++.

Klar. Aber nicht die einzige auch praktisch ernstzunehmende Alternative 
und auch nicht aus diesem Grund.

> Theoretisch deswegen, weil noch einiges vom Drumherum fehlt und es
> auch von der Marktakzeptanz abhängig ist, und wie sich das entwickelt
> kann nur die Zeit zeigen. Von der Sprache selbst aber steht dem nichts
> im Weg.

Und exakt das gilt auch für Oak, Java, C#, Lisp und viele andere mehr.



[1] "he Java platform and language began as an internal project at Sun 
Microsystems in December 1990, providing an alternative to the C++/C 
programming languages."

[2] "Because they were developing an embedded system with limited 
resources, they decided that C++ needed too much memory and that its 
complexity led to developer errors"

[3] "In 1994, Sun renamed the Oak language to Java after a trademark 
search revealed that Oak Technology used the name Oak"

von Nano (Gast)


Lesenswert?

Ich schrieb "und kann das auf normaler Hardware auch gar nicht".
Sun wollte für Java Chips bauen, die Java Bytecode verstehen, das ist 
mir sehr wohl bekannt, deswegen sagte ich "normale Hardware", solche 
Chips sind aber etwas ganz anderes, als das, was wir unter ARM und x86 
verstehen.

Und zum Thema:
"[1] "he Java platform and language began as an internal project at Sun
Microsystems in December 1990, providing an alternative to the C++/C
programming languages."

Das sagt gar nichts aus, denn C++ und C wurde selbstverständlich damals 
auch für die Anwendungsentwicklung eingesetzt.
Entscheident ist also der Kontext.


Es bleibt aber das Problem mit den genannten Schwächen, siehe oben, 
warum Java für die Systemprogramierung nicht geeignet ist.

Und selbst wenn etwas irgendwie geht, z.b. weil du ne Laufzeitumgebung 
in den Kernel einbaust und dann prebootest, dann bedeutet das nicht, 
dass sich etwas dafür auch eignet.

> Im übrigen ist es ein gängiger Irrtum, Systemprogrammierung auf die
> Programmierung von Betriebssystemkernen zu reduzieren.

Das habe ich nicht getan, der Kernel ist ein Beispiel der dafür zu 
Veranschaulichung steht.

von S. B. (piezokristall)


Lesenswert?

> Wenn du mir nicht widersprichst, was willst du mir dann sagen?
Vielleicht verstehe ich ja was falsch - für mich ist das Problem des TO 
ein Problem der Anwendungsprogrammierung.
Systemprogrammierung sind für mich eher Treiber für Schnittstellen, etc. 
- was hat das jetzt mit der Frage des TO zu tun?


> Das hängt auch von den Compileroptionen ab.
> Oder waren es "nur" Warnungen?
GNU C Compiler unter Linux, jede Menge Warnungen; bei Ausführung der 
Objektdatei gibt's dann einen 'core dumped'.
Es wird u.a. eine Deklaration von strcpy verlangt oder Einbindung der 
Headerdatei string.h

Letztendlich ist das Problem des TO gelöst.

: Bearbeitet durch User
von S. B. (piezokristall)


Lesenswert?

> Ich schrieb "und kann das auf normaler Hardware auch gar nicht".
> Sun wollte für Java Chips bauen, die Java Bytecode verstehen, das ist
> mir sehr wohl bekannt, deswegen sagte ich "normale Hardware", solche
> Chips sind aber etwas ganz anderes, als das, was wir unter ARM und x86
> verstehen.
Bei C, C++, usw. ist alles mehr oder weniger abhängig vom Betriebsystem.
Bei Macintosh, Linux, usw. würde das C oder C++ Windows-Programm unter 
Umständen nicht mehr laufen (mein Compiler unter Linux quittiert ja 
schon das obige simple Windows-Programm mit Warnungen - wenn es 
komplexer wäre, dann sähe es düster aus).
Das Theater gibt es bei Java nicht, da reicht eine Laufzeitumgebung und 
es läuft dann auf jedem Betriebsystem ohne Änderung.

von Nano (Gast)


Lesenswert?

S. B. schrieb:
>> Wenn du mir nicht widersprichst, was willst du mir dann sagen?
> Vielleicht verstehe ich ja was falsch - für mich ist das Problem des TO
> ein Problem der Anwendungsprogrammierung.
> Systemprogrammierung sind für mich eher Treiber für Schnittstellen, etc.
> - was hat das jetzt mit der Frage des TO zu tun?

Ja, das wird wohl der Grund sein.
Wir führen hier ein Nebenthema um die Programmiersprachen allgemein, das 
sich daraus entwickelt hat.

Zitter_ned_aso Posting, welches lautete:

> Darum kam doch Java raus oder? Damit man sich das Bein mit C++ nicht
> wegschießt.

als Antwort auf meine Erwähnung von Rust, mag zwar für die 
Anwendungsprogrammierung stimmen, suggeriert aber auch bzw. kann man es 
so interpretieren, dass Java rauskam um C++ vollständig zu ersetzen oder 
dies tun könnte.

Und das geht halt bei der Systemprogrammierung nicht mehr, mit Rust 
allerdings schon.
Deswegen habe ich erwähnt, das Java C++ nicht ersetzen kann mit Hinweis 
auf die Systemprogrammierung.


S. B. schrieb:
>> Ich schrieb "und kann das auf normaler Hardware auch gar nicht".
>> Sun wollte für Java Chips bauen, die Java Bytecode verstehen, das ist
>> mir sehr wohl bekannt, deswegen sagte ich "normale Hardware", solche
>> Chips sind aber etwas ganz anderes, als das, was wir unter ARM und x86
>> verstehen.
> Bei C, C++, usw. ist alles mehr oder weniger abhängig vom Betriebsystem.
> Bei Macintosh, Linux, usw. würde das C oder C++ Windows-Programm unter
> Umständen nicht mehr laufen (mein Compiler unter Linux quittiert ja
> schon das obige simple Windows-Programm mit Warnungen - wenn es
> komplexer wäre, dann sähe es düster aus).
> Das Theater gibt es bei Java nicht, da reicht eine Laufzeitumgebung und
> es läuft dann auf jedem Betriebsystem ohne Änderung.

Ja, wenn du für ein spezifisches Betriebssystem in C oder C++ Programme 
schreiben willst und du die Systemlibs nicht selbst implementieren 
willst, dann ist das für gewöhnlich so, aber mit C oder C++ kannst du 
auch ein Betriebssystem, Teile davon oder die Treiber dafür oder eine 
Firmware für die Hardware schreiben.
Java kann ohne Laufzeitumgebung oder spezieller Java CPU die Java 
Bytecode direkt versteht nichts mehr.

Die Sprachen sind somit einfach grundverschieden um sagen zu können, 
dass Java entwickelt wurde um C++ vollständig zu verdrängen oder es 
wenigstens zu können.
Rust könnte C++ dagegen sehr wohl vollständig verdrängen wenn man 
wollte, die Sprache gibt das von den Features her her.

von S. B. (piezokristall)


Lesenswert?

> Die Sprachen sind somit einfach grundverschieden um sagen zu können,
> dass Java entwickelt wurde um C++ vollständig zu verdrängen oder es
> wenigstens zu können.
Mit dem Aufkommen der Android Smartphones hat sich die Frage des 
Fortbestandes von Java bzw. dem Nutzen gegenüber C++ geklärt :-)

> Rust könnte C++ dagegen sehr wohl vollständig verdrängen wenn man
> wollte, die Sprache gibt das von den Features her her.
Rust kenne ich noch nicht - ich Laufe der IT Geschichte ist so manche 
hochgepriesene Sprache schnell wieder in der Versenkung verschwunden 
(z.B. Ruby on rails wollte ich mal starten, habe es dann aber sein 
gelassen);
alles sehr unbeständig bzw. Nischenmarkt.

von rbx (Gast)


Lesenswert?

S. B. schrieb:
> Auch in Puncto Sicherheit gibt es bessere Alternativen, nämlich ADA, das
> im u.a. im Militärbereich verwandt wird.

Die Sicherheitsdenke ist vermutlich die gleiche wie beim Autofahren. 
Allradantrieb, Antiblockersysteme, Sicherheitsgurt uvm. Technisch 
sicherer, aber das wird oft so genutzt (rücksichtsloser fahren), dass am 
Ende fast das selbe herauskommt.

Bei Haskell heißt es öfter: keine Tests.
Wenn sich das einbürgert, würden die guten Eigenschaften dieser 
Programmiersprache missbraucht werden, vor allem, um Kosten zu sparen 
o.a. Gründen.

Haskell zeigt noch etwas anderes: alles was irgendwie nicht C-verwandt 
ist, erscheint unkoscher. Der Hintergrund ist aber eher, weil C so 
einfach bzw. besser: pragmatisch gestrickt ist.

Oder Wörter-Psycho:

Java: Kaffee, Kuchen, Insel..
Haskell: Lambda Kalkül, List Komprehensions, Monaden.. (Hilfe..)

C: In den Fuß schießen -> hat mit dem Zeigen zu tun bzw. auf den Fuß 
zeigen - und für den ein oder anderen (vermutl.) mit schneller ziehen?
Früher in Zeitschriften: Vitamin C
Basic: passt ganz gut, aber der Begriff verschleiert etwas zu unrecht 
den großen Bruder..
C++ ..ganz offenbar eine Weiterentwicklung, die sich (versehentlich) 
ständig wiederholt

von Nano (Gast)


Lesenswert?

S. B. schrieb:
>> Die Sprachen sind somit einfach grundverschieden um sagen zu können,
>> dass Java entwickelt wurde um C++ vollständig zu verdrängen oder es
>> wenigstens zu können.
> Mit dem Aufkommen der Android Smartphones hat sich die Frage des
> Fortbestandes von Java bzw. dem Nutzen gegenüber C++ geklärt :-)

Android hat einen Kernel der in C geschrieben wurde. Die meisten dürften 
den kennen. ;)

>> Rust könnte C++ dagegen sehr wohl vollständig verdrängen wenn man
>> wollte, die Sprache gibt das von den Features her her.
> Rust kenne ich noch nicht - ich Laufe der IT Geschichte ist so manche
> hochgepriesene Sprache schnell wieder in der Versenkung verschwunden
> (z.B. Ruby on rails wollte ich mal starten, habe es dann aber sein
> gelassen);
> alles sehr unbeständig bzw. Nischenmarkt.

Ja, diese Risiken gibt es bei neuen Sprachen leider immer.

von Vn N. (wefwef_s)


Lesenswert?

S. B. schrieb:
>> ImZweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und
>> Geschwindigkeit.
> totaler Blödsinn; C++ ist eine Obermenge von C und deshalb gleich
> schnell oder eben langsamer - das merkt man aber erst auf alten Rechnern
> und bei größeren Programmen.

Bullshit, in jedem größeren Programm kann der Compiler mit modernem C++ 
wesentlich besser optimieren, und das bei mehr Comfort und weniger 
Fehleranfälligkeit, stichwort zero cost abstraction.
Und ja, ich schreibe beruflich Hauptsächlich in C.

S. B. schrieb:
> C++ hat sich wegen u.a. wegen bunter Windows-Fenster, der besseren IDE,
> etc. durchgesetzt; insbesondere Fenstertechnik und graphische
> Oberflächen funktionierte mit C zur damaligen Zeit praktisch nicht.

Natürlich. Deswegen verwendet man es ja auch im Serverbereich. Nicht 
etwa, weil es Dinge wie Objektorientierung, verünftige Typisierung, 
generische Programmierung und Co. bietet. Und welche "bessere IDE" soll 
das sein?
Bist du ein Satireprojekt?

Wolfgang S. schrieb:
> "Because they were developing an embedded system with limited
> resources, they decided that C++ needed too much memory and that its
> complexity led to developer errors"

C++ braucht zuviele Resourcen und deswegen brauchen wir Java? Selten so 
gelacht.

S. B. schrieb:
> Es wird u.a. eine Deklaration von strcpy verlangt oder Einbindung der
> Headerdatei string.h

Tja, hättest wohl string.h einbinden sollen.

Nano schrieb:
> Deswegen habe ich erwähnt, das Java C++ nicht ersetzen kann mit Hinweis
> auf die Systemprogrammierung.

Und weil die Performance einfach grottig ist.

S. B. schrieb:
> Mit dem Aufkommen der Android Smartphones hat sich die Frage des
> Fortbestandes von Java bzw. dem Nutzen gegenüber C++ geklärt :-)

Fortbestand? Ja. Nutzen? Nö.

rbx schrieb:
> Die Sicherheitsdenke ist vermutlich die gleiche wie beim Autofahren.
> Allradantrieb, Antiblockersysteme, Sicherheitsgurt uvm. Technisch
> sicherer, aber das wird oft so genutzt (rücksichtsloser fahren), dass am
> Ende fast das selbe herauskommt.
>
> Bei Haskell heißt es öfter: keine Tests.

Wer ADA einsetzen (muss) weil Military, Aerospace oder sonstwas, wird 
sich Tests nicht sparen können...

von rbx (Gast)


Lesenswert?

vn n. schrieb:
> Wer ADA einsetzen (muss) weil Military, Aerospace oder sonstwas, wird
> sich Tests nicht sparen können...

Man beachte die rein begriffliche Verwandtschaft zwischen ADA und 
Haskell.

Von Charles Babbage habe ich mal gelesen, dass er deswegen auf Computer 
kam, weil er viele Rechenfehler in einer Nachschlagetabelle erkannt 
hatte und so auf die Idee einer Automation kam.
Man sieht aber heute, bei guter Automation am Beispiel der 
Rechtschreibkontrolle, dass sie ihre Grenzen hat (z.B. 
Erkennungsschwächen) wie auch dass sie missbraucht wird 
(Qualitätsnachlass bei Tageszeitungen, Mitarbeitereinsparungen z.B.)

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Christoph O. schrieb:
> Zumindest für den eingangs beschriebenen Fall
> kann die Länge des Strings auch vom Compiler bestimmt werden:
> char txtstr[] = "100°C\n\0";
> Meine ich zumindest, hab es grad nicht getestet.

Ich habe nochmal die Variante von Christoph ausprobiert... und die ist 
sehr schön da kurz:

---------------------

#include <stdio.h>
// #include <string.h>

char txtstr[] = "100\xF8""C\n";

int main()
{
printf (txtstr);
return(0);
}

---------------------

strcpy habe ich rausgeschmissen da unnütz an der Stelle

Danke nochmal für die Tipps... hab heute viel dazugelernt.

von Wolfgang S. (ws01)


Lesenswert?

Nano schrieb:
> Ich schrieb "und kann das auf normaler Hardware auch gar nicht".
> Sun wollte für Java Chips bauen, die Java Bytecode verstehen, das ist
> mir sehr wohl bekannt, deswegen sagte ich "normale Hardware", solche
> Chips sind aber etwas ganz anderes, als das, was wir unter ARM und x86
> verstehen.

In Irrtum wird nicht besser, wenn man ihn mehrfach wiederholt.

Man benötigt weder C noch eine andere Sprache, um Sprachen des Typs von 
Oak, Java usw. auf "normaler Hardware", also den derzeit gebräuchlichen 
CISC/RISC-Prozessoren verwenden zu können, lediglich für den initialen 
Bootstrap wird es bequemer, wenn man für die Unterstützung einer neuen 
ISA einen Compiler in einer beliebigen genügend brauchbaren 
Programmiersprache zur Verfügung hat. Sobald der damit implementierte 
Codegenerator/Interpreter seinen Zweck erfüllt hat, kann man ihn 
wegwerfen.

https://en.wikipedia.org/wiki/Tombstone_diagram

Vorsorglich, dies ist nicht die Behauptung, diese seit der frühen 
Steinzeit bekannte einschlägige Methode sei der einzige oder der beste 
Weg. Wichtig ist mir aber der Hinweis, daß dies kein bloß theoretisches 
Verfahren ist und daß es jedenfalls für eine Widerlegung der obigen 
pauschalen Behauptung reicht.

Ich nehme an, daß dies dem OP genau so wenig hilft wie die Hinweise auf 
Rust. Jedoch habe ich etwas dagegen, wenn man Anfängern in dieser Weise 
einen Bären aufbindet.

Daß viele der besagten Sprachen samt ihrer Laufzeitumgebung einen 
Anfänger, der bereits an dem eingangs skizzierten Problem scheitert, vor 
den vielen Ideosynkrasien der Architektur der darunterliegenden 
"normalen Hardware" abschirmt, wird genau so wenig bestritten wie der 
Sachverhalt, daß beim praktischen Einsatz von C hilfreich ist, ein 
gewisses Verständnis derselben zu haben.

Bevor man hier aber mit Ratschlägen um sich wirft, sollte man erst mal 
herauszubringen versuchen, welchen Zweck der OP mit dem Einsatz bzw. 
Erlernen von C verfolgt. Vielleicht wäre ein schlichtes "Ja" auf "Aber 
vielleicht ist C dafür die falsche Programmiersprache" die richtige 
Antwort gewesen.  Eine Sammlung von Rezepten resp. die Suche nach 
"allgemeingültigen Lösungen" als Ersatz eines ausreichenden 
Sprachverständnisses - mit dem man sich solche Fragen dann weitgehend 
selber beantworten kann oder wenigstens weiss, wo man die Antworten 
findet -, das ist der falsche Weg.

>
> Und zum Thema:
> "[1] "he Java platform and language began as an internal project at Sun
> Microsystems in December 1990, providing an alternative to the C++/C
> programming languages."
>
> Das sagt gar nichts aus, denn C++ und C wurde selbstverständlich damals
> auch für die Anwendungsentwicklung eingesetzt.

Das für sich genommen besagt, daß Oak/Java ursprünglich als Alternative 
zu C++ gedacht war.  Im Zusammenhang mit dem Projekt, für das die 
Sprache spezifiziert wurde, läßt sich auch erkennen, daß der intendierte 
Zweck die Systemprogrammierung von embedded systems, im Speziellen einer 
konkreten Set-top-Box war.

Oak mag nach der Eiche vor Goslings Zimmer benannt sein, expandiert 
wurde dies als Object Application Kernel. Ein Folgeprojekt war "LiveOak" 
mit der expliziten Intention, mit Oak ein unspezialisiertes kleines OS 
zu realisieren.



> Entscheident ist also der Kontext.

Eben.  Wenn man den nicht kennt, neigt man zu Fehlschlüssen.

>
> Es bleibt aber das Problem mit den genannten Schwächen, siehe oben,
> warum Java für die Systemprogramierung nicht geeignet ist.

Auch diese Behauptung könnte man hinterfragen, ich bezweifle aber, daß 
das dem OP sonderlich weiterhilft.

>
> Und selbst wenn etwas irgendwie geht, z.b. weil du ne Laufzeitumgebung
> in den Kernel einbaust und dann prebootest, dann bedeutet das nicht,
> dass sich etwas dafür auch eignet.

Ex falso quodlibet.

>
>> Im übrigen ist es ein gängiger Irrtum, Systemprogrammierung auf die
>> Programmierung von Betriebssystemkernen zu reduzieren.
>
> Das habe ich nicht getan, der Kernel ist ein Beispiel der dafür zu
> Veranschaulichung steht.

Auch in Oak ließe sich ein Kernel programmieren. Dies wurde seinerzeit 
ja sogar begonnen.  Als Veranschaulichung der Eigenschaften und Vorzüge 
von Rust taugt das auch deswegen nicht.

von Dirk B. (dirkb2)


Lesenswert?

So wie du printf gerade verwendest, geht das irgenwann schief. Nämlich 
dann, wenn in dem String ein % enthalten ist.
1
printf("%s", txtstr);
oder
1
fputs(txtstr, stdout);
oder wenn am Ende kein \n ist (das hängt puts automatisch an)
1
puts(txtstr);

von Wolfgang S. (ws01)


Lesenswert?

vn n. schrieb:
> Wolfgang S. schrieb:
>> "Because they were developing an embedded system with limited
>> resources, they decided that C++ needed too much memory and that its
>> complexity led to developer errors"
>
> C++ braucht zuviele Resourcen und deswegen brauchen wir Java? Selten so
> gelacht.

Quark. Dies ist ein paraphrasiertes Zitat vom Anfang der 90er, 
betreffend den direkten Vorläufer von Java, Oak.

Oak und damit Java hatte seine ersten Ursprünge übrigens bereits in den 
70ern und war von Bill Joy damals spezifisch für die Programmierung 
eines kleinen OS entworfen worden, basierend auf den Erfahrungen mit 
Mesa und C. C++, das damals ein ziemlich grobschlächtig implementierter 
Versuch war, das Konzept von Simula 67 (eine Erweiterung von Algol 60, 
gedacht für discrete event simulation, die erste objektorientierte 
Sprache überhaupt) auf C zu übertragen, erwies sich dafür zu der Zeit 
als zu plump und unbrauchbar. Daß der Ansatz, sich auf Basis einer 
wackeligeren Unterlage (C statt Algol) viel mehr vorzunehmen ("zero 
abstraction"), nicht so einfach werden würde, wie Stroustrup sich das 
vorstellte, hat damals kaum jemanden überrascht, der sich mit dem 
Entwurf und der Implementierung von Programmiersprachen beschäftigte.

Daß man durch jahrzehntelanges Nachbessern von Sprache, Library und 
Compiler und Benutzungseinschränkungen jede Sprache für die meisten 
Anwendungsfälle brauchbar machen kann, irgendwie, ist unbestritten. 
Eleganter wird eine Sprache dadurch nur selten. Und wie schlank oder 
bloated C++ oder Java heute sind, spielt weder für die Betrachtung, wo 
Java herkommt, eine Rolle noch für die Frage, welche Spracheigenschaften 
für die OS-Entwicklung erforderlich und förderlich sind.

Im übrigen diente das obige Zitat lediglich dazu, eine Behauptung zu 
widerlegen

von Torsten K. (Firma: TOKA) (avantasia)


Angehängte Dateien:

Lesenswert?

Dirk B. schrieb:
> So wie du printf gerade verwendest, geht das irgenwann schief. Nämlich
> dann, wenn in dem String ein % enthalten ist.
> printf("%s", txtstr);oderfputs(txtstr, stdout);oder wenn am Ende kein \n
> ist (das hängt puts automatisch an)puts(txtstr);

Hallo Dirk,

das habe ich natürlich gleich ausprobiert und dabei bis auf die Tatsache 
das bei der ersten Version noch eine Leerzeile folgt keinen Unterschied 
oder Problem feststellen können. Kannst Du Deinen Hinweis bitte 
präzisieren?

Anbei der Quellcode von obigem Bild mit dem Titel Run #1

----
#include <stdio.h>
// #include <string.h>

char txtstr[] = "100%\n";

int main()
{
printf ("%s", txtstr);
return(0);
}
----

und hier der Quellcode von obigem Bild mit dem Titel Run #2

----
#include <stdio.h>
// #include <string.h>

char txtstr[] = "100%";

int main()
{
printf ("%s", txtstr);
return(0);
}
----

von zitter_ned_aso (Gast)


Lesenswert?

Torsten K. schrieb:
> char txtstr[] = "100%\n";

char str[]="ddd%ddd";

printf(str);

das hat er damit gemeint.

von zitter_ned_aso (Gast)


Lesenswert?

"ddd%ddd" ist wahrscheinlich kein gutes Beispiel ;-)

So ist es besser:
1
char str[]="Preisnachlas von 5% auf alle IT-Buecher";
2
printf(str);

%f wird als Platzhalter für eine Fließkommazahl betrachtet. Und die 
Ausgabe ist falsch.
1
char str[]="Preisnachlas von 5%% fuer alle IT-Buecher";
wäre richtig.

https://de.wikibooks.org/wiki/C-Programmierung:_Einfache_Ein-_und_Ausgabe

von Torsten K. (Firma: TOKA) (avantasia)


Angehängte Dateien:

Lesenswert?

zitter_ned_aso schrieb:
> char str[]="ddd%ddd";
>
> printf(str);
>
> das hat er damit gemeint.

Ja habe ich eben ausprobiert und Du hast Recht...

siehe zweites Bild

: Bearbeitet durch User
von zitter_ned_aso (Gast)


Lesenswert?

KORREKTUR:

"ddd%ddd" ist wahrscheinlich kein gutes Beispiel ;-)

So ist es besser:

char str[]="Preisnachlas von 5% fuer ";
printf(str);


%f wird als Platzhalter für eine Fließkommazahl betrachtet. Und die
Ausgabe ist falsch.

char str[]="Preisnachlass von 5%% fuer alle IT-Buecher";

wäre richtig.

https://de.wikibooks.org/wiki/C-Programmierung:_Einfache_Ein-_und_Ausgabe

von Torsten K. (Firma: TOKA) (avantasia)


Angehängte Dateien:

Lesenswert?

Ja... auch hier richtig. Aber ich denke, das kommt auch immer darauf an 
WAS man gerade ausgeben will.

----
#include <stdio.h>
// #include <string.h>

char txtstr[] = "Preisnachlaß von 5% fuer ";

int main()
{
printf (txtstr);
return(0);
}
----

Für mein obiges Beispiel passt es zumindest und das war was ich wollte. 
Deinen Hinweis greife ich trotzdem auf und werde ihn verfolgen. Danke

von zitter_ned_aso (Gast)


Lesenswert?

Torsten K. schrieb:
> und Du hast Recht

Dirk war das. Ich kam nur mit einem Beispiel.

Fuer bestimmte Sonderzeichen gibt es unter C spezielle "Kodierungen", 
wenn man sie in einem String darstellen will.

%% fuer %
\" fuer "
usw..

von Dirk B. (dirkb2)


Lesenswert?

Das mit dem %% gilt aber nur für den Formatstring von printf.

Denn das % leitet einen Formatspecifier ein.

Einfache Strings können einfacher mit puts ausgegeben werden.

von S. B. (piezokristall)


Lesenswert?

> Bullshit, in jedem größeren Programm kann der Compiler mit modernem C++
> wesentlich besser optimieren, und das bei mehr Comfort und weniger
> Fehleranfälligkeit, stichwort zero cost abstraction.
Mag schon sein, daß der C++ Compiler besser ist, weil der C Compiler 
nicht mehr weiterentwickelt wird gibt's natürlich zeitliche Einbußen.
Deswegen ist das Endergebnis aber nicht unbedingt besser - das ist der 
Irrtum, insbesondere der BWL-Personaler.

> Und ja, ich schreibe beruflich Hauptsächlich in C.
LOL, und dann kritisierst Du an C rum ???
Wir haben doch einen 'blühenden?' Arbeitsmarkt, such Dir doch einen 
neuen Job, wo es nur um dieses f**k C++ geht - gibt doch genug 
Arbeitgeber, die genau das und nichts anderes mehr suchen!
Bei soviel Mangel überall sollte das doch wirklich kein Problem sein?
Du bist also beruflich inkonsequent, zumal Du ja genug BE hast :-)

> Natürlich. Deswegen verwendet man es ja auch im Serverbereich. Nicht
> etwa, weil es Dinge wie Objektorientierung, verünftige Typisierung,
> generische Programmierung und Co. bietet. Und welche "bessere IDE" soll
> das sein?
> Bist du ein Satireprojekt?
bei C++ ist das logischerweise die Visual C++ Schiene und die dürfte 
besser sein als irgendeine GNU C Variante oder was immer Du unter C 
nutzt.
C++ ist nach C gekommen und damit ist die Weiterentwicklung von C 
zugunsten von C++ mehr oder weniger zum Erliegen gekommen.
Was erwartest Du?
Wenn es nicht den Mikrocontroller-Bereich gäbe, wäre es vorbei mit C!
Ich bezweifle ja nicht, daß C++ seine Vorteile hat - aber die 
Systemschiene ist mehr oder weniger gelaufen, wenn Du nicht gerade in 
der Wartung als Sysadmin tätig bist.
Ansonsten ist Anwendungsprogrammierung gefragt und da schlägt sich Java 
besser.

> C++ braucht zuviele Resourcen und deswegen brauchen wir Java? Selten so
> gelacht.
im Vergleich zu C aber schon und das verschweigt der C++ Fan.

> Tja, hättest wohl string.h einbinden sollen.
siehe Programm, habe ich ja gemacht. Aber es ist ein Beispiel, welche 
kleinen Programmiertücken ein anderes Betriebsystem, etc. mit sich 
bringt.
Das wäre in Java nicht notwendig gewesen wegen JRE - und zum 100. Mal, 
es geht hier nicht um Systemprogrammierung! Das ist nur eine schöne 
Nische für wenige.

> Fortbestand? Ja. Nutzen? Nö.
Du kannst Anwendungsapps für Android programmieren - und damit wird u.a. 
wenigstens noch Kleingeld gemacht.
Von Deiner Systemprogrammierung, wo nur einige wenige Experten vom 
Kuchen profitieren, kann die Masse jedenfalls nicht leben, oder?

> Wer ADA einsetzen (muss) weil Military, Aerospace oder sonstwas, wird
> sich Tests nicht sparen können...
braucht das jeweilige Unternehmen ja auch nicht, weil die 
Endverkaufspreise entsprechend sind und diese Preise auch ohne zu zucken 
gezahlt werden.
Der jeweilige Staat schwimmt ja im Geld, wenn es um Militär geht.
Sparen in diesem Bereich ist eine absolute Fehlanzeige, es lebe der 
Snob-Effekt.

von vn nn (Gast)


Lesenswert?

S. B. schrieb:
> Mag schon sein, daß der C++ Compiler besser ist, weil der C Compiler
> nicht mehr weiterentwickelt wird gibt's natürlich zeitliche Einbußen.
> Deswegen ist das Endergebnis aber nicht unbedingt besser - das ist der
> Irrtum, insbesondere der BWL-Personaler.

Du hast eine blühende Fantasie. Wäre neu, dass der GCC nicht mehr 
weiterentwickelt wird...

S. B. schrieb:
> LOL, und dann kritisierst Du an C rum ???
> Wir haben doch einen 'blühenden?' Arbeitsmarkt, such Dir doch einen
> neuen Job, wo es nur um dieses f**k C++ geht - gibt doch genug
> Arbeitgeber, die genau das und nichts anderes mehr suchen!
> Bei soviel Mangel überall sollte das doch wirklich kein Problem sein?
> Du bist also beruflich inkonsequent, zumal Du ja genug BE hast :-)

Ja, wie kann man nur so realistisch sein, und sein tagtäglich 
verwendetes Werkzeug kritisieren!
Keine Angst, die Sprache kann ich in meinem Job schon selbst aussuchen, 
ich bin ja kein armer Programmiersklave der sich sowas vorschreiben 
lassen muss. Aber nicht für jeden Prozessor gibt es einen (guten) 
C++-Compiler, und dann ist da noch die Sache mit Legacycode...

S. B. schrieb:
> bei C++ ist das logischerweise die Visual C++ Schiene und die dürfte
> besser sein als irgendeine GNU C Variante oder was immer Du unter C
> nutzt.

Ohoho, C++ ist also Visual C++. Verwendet das überhaupt noch irgendwer, 
wo doch GCC oder CLANG viel besser sind?

S. B. schrieb:
> C++ ist nach C gekommen und damit ist die Weiterentwicklung von C
> zugunsten von C++ mehr oder weniger zum Erliegen gekommen.
> Was erwartest Du?

Achso, C wird also nicht mehr weiterentwickelt. C11 sagt dir was? Aus 
welchem Jahr stammt C11 nochmal? Tipp: es steckt im Namen.

S. B. schrieb:
> Ich bezweifle ja nicht, daß C++ seine Vorteile hat - aber die
> Systemschiene ist mehr oder weniger gelaufen, wenn Du nicht gerade in
> der Wartung als Sysadmin tätig bist.
> Ansonsten ist Anwendungsprogrammierung gefragt und da schlägt sich Java
> besser.

Dieser Absatz ließt sich leicht wirr, kannst du ihn näher erläutern? Was 
ist die "Systemschiene", warum ist die gelaufen, und welche konkreten 
Vorzüge soll Java haben?

S. B. schrieb:
> im Vergleich zu C aber schon und das verschweigt der C++ Fan.

Du kannst sicher erläutern, wo dieses mehr an Ressourcen deiner Meinung 
nach herkommen soll.
Oder sind es doch nur leere Worte?

S. B. schrieb:
> siehe Programm, habe ich ja gemacht. Aber es ist ein Beispiel, welche
> kleinen Programmiertücken ein anderes Betriebsystem, etc. mit sich
> bringt.

Was genau soll das mit dem Betriebssystem zu tun haben? Die 
Standardbibliotheken sind Teil des Standards, aber das hilft natürlich 
nicht, wenn man den Compiler nicht bedienen kann... leider schaffst du 
es ja auch nicht zu beschreiben, was genau du gemacht hast, um dieses 
Sonderbare Ergebnis zu bekommen... Welcher Code genau (Zeichen für 
Zeichen), welcher Compiler, welche Einstellungen? Es ist in den 
seltensten Fällen der Compiler Schuld, das Problem sitzt meist vor dem 
Bildschirm.

S. B. schrieb:
> Das wäre in Java nicht notwendig gewesen wegen JRE - und zum 100. Mal,
> es geht hier nicht um Systemprogrammierung! Das ist nur eine schöne
> Nische für wenige.

In welcher Realität braucht man eine fette JRE für ein bisschen 
Stringspielerei, und was hast du immer mit deiner Systemprogrammiererei?
Allein welche Sicherheitsprobleme die JRE ständig hat, sagt schon 
alles...

S. B. schrieb:
> Du kannst Anwendungsapps für Android programmieren - und damit wird u.a.
> wenigstens noch Kleingeld gemacht.

Oho, Appprogrammierung, ist das das was man macht, wenn man sonst 
nirgends unterkommt? Aber ich kann dich trösten, man kann auch 
Android-Apps ohne Java schreiben!

S. B. schrieb:
> Von Deiner Systemprogrammierung, wo nur einige wenige Experten vom
> Kuchen profitieren, kann die Masse jedenfalls nicht leben, oder?

Deine Fantasie wird immer blühender. Mit "Systemprogrammierung" meinst 
du den ganzen Betriebssystemsektor? Einen Großteil der 
Desktopanwendungen (nein, MS Office oder ein 3D-CAD-System wie CATIA ist 
nicht in Java geschrieben)? Nicht mal ein bedeutender Webbrowser ist in 
Java geschrieben, im Gegenteil, man hat nach massiver 
Sicherheitsprobleme Java aus den Browsern verbannt...

S. B. schrieb:
> braucht das jeweilige Unternehmen ja auch nicht, weil die
> Endverkaufspreise entsprechend sind und diese Preise auch ohne zu zucken
> gezahlt werden.
> Der jeweilige Staat schwimmt ja im Geld, wenn es um Militär geht.
> Sparen in diesem Bereich ist eine absolute Fehlanzeige, es lebe der
> Snob-Effekt.

Tja, wenn man sich nicht als Java-App-Frickler prostituieren muss, liegt 
das Geld halt auf der Straße, man muss es nur aufheben. Wenn man aber 
ständig mit Billiglohn-Codemonkeys konkurrieren muss...

Mich würde ja echt interessieren, woher du deine ganzen Fantastereien 
hernimmst... C wird nicht weiterentwickelt, C++ ist Visual C++, 
Anwendungen werden nur in Java geschrieben...

von S. B. (piezokristall)


Lesenswert?

> Ja, wie kann man nur so realistisch sein, und sein tagtäglich
> verwendetes Werkzeug kritisieren!
Allerdings - wenn Dir C++ so gut gefällt und Du Dich im Job aber mit C 
abgeben mußt, dann verstehe ich das nicht ganz?

> Keine Angst, die Sprache kann ich in meinem Job schon selbst aussuchen,
> ich bin ja kein armer Programmiersklave der sich sowas vorschreiben
> lassen muss. Aber nicht für jeden Prozessor gibt es einen (guten)
> C++-Compiler, und dann ist da noch die Sache mit Legacycode...
Aha, jetzt auf einmal doch C++:
Deine Aussage oben lautete aber:
"Und ja, ich schreibe beruflich Hauptsächlich in C."
DAS war Deine Aussage.
Ja was denn jetzt?
Kann man Dich noch Ernst nehmen?

> Ohoho, C++ ist also Visual C++. Verwendet das überhaupt noch irgendwer,
> wo doch GCC oder CLANG viel besser sind?
wenn es keine Frickelbude ist, wo Du arbeitest gibt es eben auch 
Vorgaben von der Chefetage - vielleicht bist Du ja auch Freiberufler?

> Achso, C wird also nicht mehr weiterentwickelt. C11 sagt dir was? Aus
> welchem Jahr stammt C11 nochmal? Tipp: es steckt im Namen.
Kennst Du Basic? Da wird ebenfalls ein Revival mit allerlei Neuauflagen 
probiert, die so schlecht nicht sind - Fakt ist, daß das ein absoluter 
Nischenmarkt ist und deswegen ist ja heute C++ oder C# angesagt - C11, 
usw. interessiert dank C++, C# kein Schwein mehr.

> Was genau soll das mit dem Betriebssystem zu tun haben? Die
> Standardbibliotheken sind Teil des Standards, aber das hilft natürlich
> nicht, wenn man den Compiler nicht bedienen kann...
Was müßte ich denn bei meinen GNU C Compiler unter Linux einstellen, 
damit das auch ohne die Headerdatei string.h wie beim TO funktioniert?

> Du kannst sicher erläutern, wo dieses mehr an Ressourcen deiner Meinung
> nach herkommen soll.
> Oder sind es doch nur leere Worte?
mehr Quellcode und Du siehst es auch bei der Laufzeit auf älteren 
Rechnern und insbesondere bei größeren Programmen - KDE als Desktop 
verwende ich deshalb nicht.
Deshalb werden Mikrocontroller ja auch primär in C statt in C++ 
programmiert, weil sich dort der mangelnde Speicherplatz noch bemerkbar 
macht und last but not least c++ ist eine 'Obermenge' von c .... Du 
kannst maximal die gleiche Laufzeit erreichen, aber nicht besser.

> Es ist in den seltensten Fällen der Compiler Schuld, das Problem sitzt
> meist vor dem Bildschirm.
Bei dem TO funktioniert obiges Programm unter CodeBlocks Windows ohne 
string.h und bei mir nicht.
Zeig mir doch bitte mal konkret was Du kannst!
Was müßte ich denn da an meinen GNU C Compiler unter Linux noch 
einstellen, damit es so wie bei CodeBlocks ohne string.h funzt?
Na? Ist doch alles so easy?
Wie geht das in den Compiler-Einstellungen; ich weiß es nämlich nicht, 
aber Du sicherlich?!
Ich wette, dieser Part wird umgangen und es gibt keine Antwort auf meine 
Frage? Wie immer.

> Oho, Appprogrammierung, ist das das was man macht, wenn man sonst
> nirgends unterkommt?
Genau, so einen großkotzigen Top-Job bekommt nämlich nicht jeder, weil 
die Nachfrage gering ist. Sei froh, wenn Du das Glückslos gezogen hast - 
offenbar bist Du Dir dessen gar nicht bewußt!

> Aber ich kann dich trösten, man kann auch Android-Apps ohne Java
> schreiben!
kann man, aber warum sollte man vom Mainstream abweichen, wenn sich Java 
diesbezüglich durchgesetzt hat?
Du kannst von mir aus auch in "Halligalli" programmieren und das 
Ergebnis kann sehr gut oder sogar besser sein - nur ob das Dein Chefe so 
will ist eine andere Frage - der macht nämlich Vorgaben.
Wie gesagt, vielleicht bist Du ja Freiberufler, da kannst Du Dein 
eigenes Ding fahren, aber sonst eben nicht.

> Einen Großteil der Desktopanwendungen (nein, MS Office oder ein 3D-CAD-
> System wie CATIA ist nicht in Java geschrieben)? Nicht mal ein
> bedeutender Webbrowser ist in Java geschrieben, im Gegenteil, man hat
> nach massiver
> Sicherheitsprobleme Java aus den Browsern verbannt...
Du sagst es, Desktop - also Windows Rechner, denn die sind Marktführer 
.... mit Aufkommen der Smartphones / Tablets hat sich das eben etwas 
geändert.
Natürlich gibt's auch weiterhin C++ und wenn Dir so danach ist, dann 
bewirb Dich doch bei diesen Firmen (möglichst dann noch ohne Visual C++ 
als Wunschkonzept); wirst ja dann merken, was 'die' so an Anforderungen 
haben und ob Dir das dann schmeckt ?!
Dann hast Du wenigstens nichts mehr mit C zu tun, was Du ja angeblich 
hauptberuflich machst ??!
Mach doch mal, mußt ja am Ende nicht zusagen.

> Allein welche Sicherheitsprobleme die JRE ständig hat, sagt schon
> alles...
Dafür ist Java eben nicht ausgelegt, da gibt es dann bessere 
Alternativen.

> Tja, wenn man sich nicht als Java-App-Frickler prostituieren muss, liegt
> das Geld halt auf der Straße, man muss es nur aufheben. Wenn man aber
> ständig mit Billiglohn-Codemonkeys konkurrieren muss...
Warum gibst Du Dich dann noch mit C ab, wenn das alles so easy ist ?!
Dann hätte ich den Laden doch schon längst verlassen?
Du weißt offenbar nicht wie gut es Dir geht und kotzt über vor Arroganz.

> Mich würde ja echt interessieren, woher du deine ganzen Fantastereien
> hernimmst... C wird nicht weiterentwickelt, C++ ist Visual C++,
> Anwendungen werden nur in Java geschrieben...
ich hab das so konkret erlebt: "Bei uns nur Visual C++", "nur Ruby on 
Rails", usw., nur dies&das sonst nichts, interessiert uns nicht was Sie 
in anderen Sprachen können und außerdem sind Sie zu alt (das wurde 
natürlich wegen AntiDis nicht gesagt).
Also Meister-Prog, bewirb Dich mal und mach Dich mal schlau bezüglich 
Deines eigenen Marktwertes - vielleicht hast Du dann auch Deine aha 
Erlebnisse!

von vn nn (Gast)


Lesenswert?

S. B. schrieb:
> Allerdings - wenn Dir C++ so gut gefällt und Du Dich im Job aber mit C
> abgeben mußt, dann verstehe ich das nicht ganz?

Du kannst halt nicht lesen. Macht nix. Aber dann schreib doch einfach 
auch nix.

S. B. schrieb:
> Aha, jetzt auf einmal doch C++:
> Deine Aussage oben lautete aber:
> "Und ja, ich schreibe beruflich Hauptsächlich in C."
> DAS war Deine Aussage.
> Ja was denn jetzt?
> Kann man Dich noch Ernst nehmen?

Ich hab dir in dem von dir zitierten Absatz erklärt, warum man beruflich 
manchmal C nutzen muss, auch wenn man C++ bevorzugen würde. 
Offensichtlich hast du Probleme, diesen einfachen Absatz zu verstehen. 
Macht nix. Aber dann schreib doch einfach auch nix.

S. B. schrieb:
> wenn es keine Frickelbude ist, wo Du arbeitest gibt es eben auch
> Vorgaben von der Chefetage - vielleicht bist Du ja auch Freiberufler?

Chefetage? Nö, die interessiert nur dass Termine eingehalten werden. Wär 
ja noch schöner, wenn da irgendein fachfremder den Softwareentwicklern 
reinquatscht. Wobei, das erklärt natürlich, warum so viele Java oder 
.NET nutzen. Du hast halt keine Ahnung von Softwareentwicklung. Macht 
nix. Aber dann schreib doch einfach auch nix.

S. B. schrieb:
> Kennst Du Basic? Da wird ebenfalls ein Revival mit allerlei Neuauflagen
> probiert, die so schlecht nicht sind - Fakt ist, daß das ein absoluter
> Nischenmarkt ist und deswegen ist ja heute C++ oder C# angesagt - C11,
> usw. interessiert dank C++, C# kein Schwein mehr.

Du schreibst, C wird nicht mehr verwendet weil es nicht mehr 
weiterentwickelt wird.
Ich antworte, doch, sieh dir C11 an, es wird noch weiterentwickelt.
Du faselst daher, dass die Weiterentwicklungen eh keinen interessieren, 
weil eh keiner mehr C verwendet.
Du widersprichst dir.  Macht nix. Aber dann schreib doch einfach auch 
nix.

S. B. schrieb:
> Was müßte ich denn bei meinen GNU C Compiler unter Linux einstellen,
> damit das auch ohne die Headerdatei string.h wie beim TO funktioniert?

Das Headerfile bringt der Compiler mit. Du musst gar nix einstellen. Du 
kannst halt den Compiler nicht bedienen, schaffst es aber auf Nachfrage 
auch nicht zu posten, was du falsch gemacht hast, damit man dir helfen 
kann. Macht nix. Aber dann schreib doch einfach auch nix.

S. B. schrieb:
> mehr Quellcode und Du siehst es auch bei der Laufzeit auf älteren
> Rechnern und insbesondere bei größeren Programmen - KDE als Desktop
> verwende ich deshalb nicht.
> Deshalb werden Mikrocontroller ja auch primär in C statt in C++
> programmiert, weil sich dort der mangelnde Speicherplatz noch bemerkbar
> macht und last but not least c++ ist eine 'Obermenge' von c .... Du
> kannst maximal die gleiche Laufzeit erreichen, aber nicht besser.

Du hast offensichtlich keine Ahnung von Zero Cost Abstraction. Du hast 
offensichtlich keine Ahnung davon, was wirklich dafür verantwortlich 
ist, warum eine Desktopumgebung mehr Resourcen braucht als die andere. 
Du hast offensichtlich keine Ahnung davon, warum in der Praxis µC in C 
und nicht in C++ programmiert werden, weil du offensichtlich fachfremd 
bist.
Macht nix. Aber dann schreib doch einfach auch nix.
Und nein, C++ ist keine Obermenge von C.
Du behauptest erst wiederholt, C++ würde aus ominösen Gründen mehr 
Ressourcen brauchen, schaffst es aber nicht, konkret zu erläutern, warum 
das so sein soll. Du hast halt keine Ahnung von C, C++ oder 
Softwareentwicklung.  Macht nix. Aber dann schreib doch einfach auch 
nix.

S. B. schrieb:
> Bei dem TO funktioniert obiges Programm unter CodeBlocks Windows ohne
> string.h und bei mir nicht.
> Zeig mir doch bitte mal konkret was Du kannst!
> Was müßte ich denn da an meinen GNU C Compiler unter Linux noch
> einstellen, damit es so wie bei CodeBlocks ohne string.h funzt?
> Na? Ist doch alles so easy?

Jeder standardkonforme C-Compiler (und das ist der GCC natürlich) bringt 
die string.h mit. Das Problem muss also offensichtlich vom Bediener 
ausgehen. Leider schaffst du es ja auch nicht, genau zu posten was du 
gemacht hast.
Du hast keine Ahnung von C.  Macht nix. Aber dann schreib doch einfach 
auch nix.

S. B. schrieb:
> Ich wette, dieser Part wird umgangen und es gibt keine Antwort auf meine
> Frage? Wie immer.

Wie immer? Bitte, wo soll das denn bisher so der Fall sein? Du schaffst 
es ja auch nach wie vor nicht, dein konkretes Problem verständlich zu 
posten, schwafelst nur irgendwas von einer angeblich fehlenden 
string.h...

S. B. schrieb:
> Genau, so einen großkotzigen Top-Job bekommt nämlich nicht jeder, weil
> die Nachfrage gering ist. Sei froh, wenn Du das Glückslos gezogen hast -
> offenbar bist Du Dir dessen gar nicht bewußt!

Wenn man nicht über den Java-Tellerrand hinausblicken kann, bekommt man 
halt keinen Topjob. Erklärt jetzt nur nicht, warum das für Java sprechen 
soll...

S. B. schrieb:
> Du kannst von mir aus auch in "Halligalli" programmieren und das
> Ergebnis kann sehr gut oder sogar besser sein - nur ob das Dein Chefe so
> will ist eine andere Frage - der macht nämlich Vorgaben.
> Wie gesagt, vielleicht bist Du ja Freiberufler, da kannst Du Dein
> eigenes Ding fahren, aber sonst eben nicht.

Wenn es deinem Chef egal ist, dass du mit einem anderen Werkzeug bessere 
Ergebnisse produzieren kannst, würde ich mir schleunigst einen neuen Job 
suchen! Aber nachdem du ja Java für die Erleuchtung schlechthin hälst...

S. B. schrieb:
> Du sagst es, Desktop - also Windows Rechner, denn die sind Marktführer
> .... mit Aufkommen der Smartphones / Tablets hat sich das eben etwas
> geändert.

Was hat das mit Windows zu tun? Java ist ja so toll, warum sind 
leistungsfähige Programme wie CAD-Suiten nicht in Java geschrieben?

S. B. schrieb:
> Natürlich gibt's auch weiterhin C++ und wenn Dir so danach ist, dann
> bewirb Dich doch bei diesen Firmen (möglichst dann noch ohne Visual C++
> als Wunschkonzept); wirst ja dann merken, was 'die' so an Anforderungen
> haben und ob Dir das dann schmeckt ?!

"weiterhin C++", na da ist ja einer Experte... rat mal, in was 
CAD-Systeme, dein Webbrowser, dein Betriebssystem, dein Office, dein 
Mailclient, ein Webserver, etc. pp. geschrieben sind...

S. B. schrieb:
> Dann hast Du wenigstens nichts mehr mit C zu tun, was Du ja angeblich
> hauptberuflich machst ??!

Ich mach embedded. Das wüsstest du auch, könntest du sinnerfassend 
lesen. Ich will da auch nicht weg, keine Ahnung wie du darauf kommst.

S. B. schrieb:
> Dafür ist Java eben nicht ausgelegt, da gibt es dann bessere
> Alternativen.

Achso, Java ist nicht dafür ausgelegt, sicher zu sein. Tja, blöd, wofür 
darf ich es dann verwenden, wenn es nicht mit externen Daten in 
berührung kommen darf? Für ein Hello World?

S. B. schrieb:
> Warum gibst Du Dich dann noch mit C ab, wenn das alles so easy ist ?!
> Dann hätte ich den Laden doch schon längst verlassen?
> Du weißt offenbar nicht wie gut es Dir geht und kotzt über vor Arroganz.

Dass du es öfter wiederholst, macht es nicht sinnvoller. Warum sollte 
ich von meinem Job weg wollen? Dass es für manche Plattformen nur 
C-Compiler gibt, und dass man sich auch mal mit Legacycode herumschlagen 
muss, ist halt ein notwendiges übel.
Wenn man nur Java programmieren will und nicht mal ein simples 
C-Programm kompiliert kriegt, konkurriert man halt mit Millionen Indern, 
das ist Fakt, keine Arroganz.

S. B. schrieb:
> ich hab das so konkret erlebt: "Bei uns nur Visual C++", "nur Ruby on
> Rails", usw., nur dies&das sonst nichts, interessiert uns nicht was Sie
> in anderen Sprachen können und außerdem sind Sie zu alt (das wurde
> natürlich wegen AntiDis nicht gesagt).

Tja, du schreibst trotzdem nur Schwachsinn.
Aber wer nur Java kann, hat halt wenig Chancen. Wer dann auch noch keine 
Ahnung hat, und so Dinge behauptet wie z.B. C++ wäre gleichzusetzen mit 
Visual C++, oder Software würde eh nur in Java geschrieben, ist halt 
aus.

S. B. schrieb:
> Also Meister-Prog, bewirb Dich mal und mach Dich mal schlau bezüglich
> Deines eigenen Marktwertes - vielleicht hast Du dann auch Deine aha
> Erlebnisse!

Keine Angst, ich kenne meinen Marktwert. Gute Embeddedprogrammierer 
findet man halt nicht an jeder Ecke, während Java-App-Coder frisch von 
der Uni (wenn überhaupt) angeworben werden können.

Beitrag #5712317 wurde von einem Moderator gelöscht.
von S. B. (piezokristall)


Lesenswert?

> Ich hab dir in dem von dir zitierten Absatz erklärt, warum man beruflich
> manchmal C nutzen muss, auch wenn man C++ bevorzugen würde.
ach jetzt auf einmal nur 'manchmal'? Vorher hieß es noch 
'hauptsächlich'!
Macht nix, Dich kann man nicht Ernst nehmen, aber dann schreib doch 
besser nix :-)

> Das Headerfile bringt der Compiler mit. Du musst gar nix einstellen.
Aber ich muß es im Programm für den Precompiler explizit angeben mit 
#include <string.h> und der TO nicht!
Erklärung von Dir? Macht nix, geht alles ohne Einstellung; aber dann 
schreib besser nix, wenn Du es nicht weißt :-)

> Du kannst halt den Compiler nicht bedienen, schaffst es aber auf Nachfrage
> auch nicht zu posten, was du falsch gemacht hast, damit man dir helfen
> kann. Macht nix. Aber dann schreib doch einfach auch nix.
Hab ich doch geschrieben: GNU C Compiler unter Linux.
Wenn ich ohne #include <string.h> arbeite, gibt es eine fette Warnung 
vom Compiler und ich weiß nicht was ich beim Compiler 'einstellen' soll. 
Ausführung mündet dann in einem Core dumped.
Bei CodeBlocks unter Windows brauche ich diese Programmzeile nicht; was 
ist bei diesem Compiler denn anders?
Was mußt Du denn noch wissen, damit Du überhaupt eine Lösung bringen 
kannst?
Macht nix, Du weißt es nicht, bringst keine konkrete Lösung, aber dann 
schreib doch einfach auch nix.

> Was hat das mit Windows zu tun? Java ist ja so toll, warum sind
> leistungsfähige Programme wie CAD-Suiten nicht in Java geschrieben?
weil Windows den Hauptmarktanteil hat und es auf Smartphones, Tablets, 
etc. CAD-Suiten, etc. totaler Unsinn wären.
Ein stationärer Rechner ist nun einmal leistungsfähiger als jedes 
Smartphone, etc. - schlimm, daß man Dir sowas erklären muß.
Java hat auch nicht den Anspruch auf irgendwelche Hyperdüper-Programme.

> "weiterhin C++", na da ist ja einer Experte... rat mal, in was
> CAD-Systeme, dein Webbrowser, dein Betriebssystem, dein Office, dein
> Mailclient, ein Webserver, etc. pp. geschrieben sind...
Tja, Linux basiert auf C und versuche C++ zu vermeiden, da ich keinen 
Vorteil für mich darin erkennen kann - wenn es geht, möglichst C.

> Achso, Java ist nicht dafür ausgelegt, sicher zu sein. Tja, blöd, wofür
> darf ich es dann verwenden, wenn es nicht mit externen Daten in
> berührung kommen darf? Für ein Hello World?
Plattformunabhängige Programme - Du siehst es ja am obigen 
Compiler-Debakel mit string.h ; und das ist ja nur eine Kleinigkeit, 
wehe, wenn das Programm größer wäre.

> Warum sollte ich von meinem Job weg wollen?
weil Du lieber in C++ statt in C programmieren möchtest und C schlechter 
als C++ einstuft, was definitiv nicht der Fall ist vor allen in Bezug 
auf die Laufzeiten.

> Dass es für manche Plattformen nur
> C-Compiler gibt, und dass man sich auch mal mit Legacycode herumschlagen
> muss, ist halt ein notwendiges übel.
mit der Einstellung hast Du Glück, daß Du dort wo Du arbeitest überhaupt 
noch arbeiten darfst.

> Wenn man nur Java programmieren will und nicht mal ein simples
> C-Programm kompiliert kriegt, konkurriert man halt mit Millionen Indern,
> das ist Fakt, keine Arroganz.
Will ich doch gar nicht (primär mache ich C) - aber Java hat klare 
Vorteile außerhalb der Windows-Welt, die Du ignorierst.
Die Inder haben sich angepaßt und programmieren mit C++ .... das werde 
ich mir ganz sicher nicht mehr antun, zumal ich Windows sowieso hasse.
C ist nur noch im embedded Bereich und ein paar anderen Nischen; 
deswegen klappt's bei Dir auch nicht mehr dem C++ Job, vielleicht bist 
Du auch schon zu alt - das weißt Du ganz genau - und Du kannst froh 
sein, daß Du Deine sichere Stellung im Embedded Segment gefunden hast, 
weil Du sonst nämlich nichts mehr bekommst, schon gar nicht C++, wenn Du 
bisher haupt- oder nebensächlich C programmierst.
Macht nix, Du bist so von Dir überzeugt, daß Du nix mehr merkst - 
deswegen auch gar kein Versuch mehr im geliebten C++ Segment zu landen!

> Wer dann auch noch keine Ahnung hat, und so Dinge behauptet wie z.B. C++ > wäre 
gleichzusetzen mit Visual C++
wie gesagt, ich habe das bei mehreren Firmen so erlebt - da war Visual 
C++ klare Vorgabe!
Macht nix, Du bewirbst Dich ja nicht. Aber wenn man das nicht macht, 
sollte man besser nix sagen.

> Keine Angst, ich kenne meinen Marktwert. Gute Embeddedprogrammierer
> findet man halt nicht an jeder Ecke
Warum nur ist im Embedded Bereich immer noch C angesagt, wenn C++ doch 
so toll ist?! Warum nur?
Macht nix, C++ ist supi, C ist übel und Java ist s***e, so simpel ist 
Deine Logik ... aber dann würde ich doch besser nichts schreiben :-)

von vn nn (Gast)


Lesenswert?

Cola Borateur schrieb im Beitrag #5712317:
> Du bist keinen Pfifferling wert, Du häßliche Großschnauze.

Süß. Der andere bemüht sich zumindest Argumente zu bringen (auch wenn 
seine Thesen reichlich an der Realität vorbeigehen), du schaffst 
scheinbar nicht mal das.

von S. B. (piezokristall)


Lesenswert?

> Der andere bemüht sich zumindest Argumente zu bringen
hoffentlich sind Deine Lösungen im embedded Bereich besser als Deine 
pauschalen Hinweise wie Compiler 'richtig' einstellen, etc.
Blabla kann jeder.

von vn nn (Gast)


Lesenswert?

S. B. schrieb:
> ach jetzt auf einmal nur 'manchmal'? Vorher hieß es noch
> 'hauptsächlich'!

Och nö, musst du dich jetzt schon auf Formulierungen stürzen, weil du 
keine Argumente hast?

S. B. schrieb:
> Aber ich muß es im Programm für den Precompiler explizit angeben mit
> #include <string.h>

Tja, so wies halt gehört. Und trotzdem schwafelst du von "es 
funktioniert nicht".

S. B. schrieb:
> und der TO nicht!
> Erklärung von Dir? Macht nix, geht alles ohne Einstellung; aber dann
> schreib besser nix, wenn Du es nicht weißt :-)

Was schwafelst du von Einstellungen? Include string.h wies gehört und es 
funktioniert, wo liegt das Problem?
Das Setup vom TS kennt keiner, wie soll man das kommentieren?

S. B. schrieb:
> Hab ich doch geschrieben: GNU C Compiler unter Linux.
> Wenn ich ohne #include <string.h> arbeite, gibt es eine fette Warnung
> vom Compiler und ich weiß nicht was ich beim Compiler 'einstellen' soll.
> Ausführung mündet dann in einem Core dumped.

Wenn ich mit mit dem Hammer auf den Daumen hau statt auf den Nagel wird 
der Daumen blau und der Nagel geht nicht rein, blöder Hammer.
Genau so agierst du. Schriebt keinen korrekten Code und wundert sich, 
dass es nicht geht.

S. B. schrieb:
> Bei CodeBlocks unter Windows brauche ich diese Programmzeile nicht; was
> ist bei diesem Compiler denn anders?

Braucht es die sicher nicht? Und wenn schon, dass etwas zufällig 
funktioniert heißt nicht dass es immer so funktionieren muss.

S. B. schrieb:
> Was mußt Du denn noch wissen, damit Du überhaupt eine Lösung bringen
> kannst?
> Macht nix, Du weißt es nicht, bringst keine konkrete Lösung, aber dann
> schreib doch einfach auch nix.

Welche Lösung denn? Die hast du doch eh schon gefunden, "#include 
<string.h>", so wies der Standard sagt.
Übrigens reichlich billig, meine Postings zu kopieren.

S. B. schrieb:
> weil Windows den Hauptmarktanteil hat und es auf Smartphones, Tablets,
> etc. CAD-Suiten, etc. totaler Unsinn wären.
> Ein stationärer Rechner ist nun einmal leistungsfähiger als jedes
> Smartphone, etc. - schlimm, daß man Dir sowas erklären muß.

Dein Geschwafel erklärt jetzt immer noch nicht, warum diese Programme 
nicht in deinem tollen Java geschrieben sind. Was hat Windows damit zu 
tun? Was hat die Leistungsfähigkeit von Desktoprechner damit zu tun?
Du redest dich um Kopf und Kragen, und kannst keine deiner abstrusen 
Theorien untermauern.

S. B. schrieb:
> Java hat auch nicht den Anspruch auf irgendwelche Hyperdüper-Programme.

Achso, Java ist nicht dafür gedacht, damit sinnvolle Programme zu 
schreiben, sondern nur Smartphonespielereien und "Hello World"? Sag das 
doch gleich.

S. B. schrieb:
> Tja, Linux basiert auf C und versuche C++ zu vermeiden, da ich keinen
> Vorteil für mich darin erkennen kann - wenn es geht, möglichst C.

Leider kann man auf diesen Satz nicht mal antworten, da er kein 
sinnvoller Deutscher Satz ist, und ich absolut nicht verstehe, was du 
damit ausdrücken willst.
Aber ganz großes Kino, ich frage dich warum du von "weiterhin C++" 
schwafelst, wo doch ein Großteil der PC-Software geschrieben wird (und 
nicht etwa Java, was du immer wieder zu erklären versuchst), und 
fabulierst von C und Linux. Weißt du eigentlich, was du schreibst?

S. B. schrieb:
> Plattformunabhängige Programme

Achso, deswegen wird ja auch so viel in Java geschrieben. Browser, 
Mailclients, Webserver oder Officesuiten z.B.
Ironie Ende.


S. B. schrieb:
> Du siehst es ja am obigen
> Compiler-Debakel mit string.h ; und das ist ja nur eine Kleinigkeit,
> wehe, wenn das Programm größer wäre.

Welches Compilerdebakel denn? Du versuchst fehlerhaften Code zu 
kompilieren, es funktioniert nicht (der Compiler weißt dich sogar auf 
deinen Fehler hin) und du nennst das Debakel?

S. B. schrieb:
> weil Du lieber in C++ statt in C programmieren möchtest und C schlechter
> als C++ einstuft

Tja, deswegen wird bei uns für neue Projekte ja auch nur noch C++ 
verwendet, wenn ein Compiler für die Plattform existiert.

S. B. schrieb:
> was definitiv nicht der Fall ist vor allen in Bezug
> auf die Laufzeiten.

Kannst du das jetzt endlich mit Argumenten belegen, anstatt es immer und 
immer wieder zu wiederholen?

S. B. schrieb:
>> Dass es für manche Plattformen nur
>> C-Compiler gibt, und dass man sich auch mal mit Legacycode herumschlagen
>> muss, ist halt ein notwendiges übel.
> mit der Einstellung hast Du Glück, daß Du dort wo Du arbeitest überhaupt
> noch arbeiten darfst.

Diese Behauptung kannst du sicher auch näher untermauern. Ich kann froh 
sein dass ich noch wo arbeiten darf, weil es für manche Plattformen 
keinen C++-Compiler gibt?
Aber immerhin, im Gegensatz zu dir nimmt mich ja noch jemand.

S. B. schrieb:
> Will ich doch gar nicht (primär mache ich C) - aber Java hat klare
> Vorteile außerhalb der Windows-Welt, die Du ignorierst.

Ich hab dich jetzt schon so oft gefragt, welche diese sein sollen, und 
warum dann so viel Software (auch Plattformunabhängig) in C++ 
geschrieben ist, z.B. mit sehr hoher Wahrscheinlichkeit der Webbrowser 
von dem aus du postest, oder auch der Webserver auf dem dieses Forum 
läuft.
Bis jetzt konntest du das nicht beantworten.

S. B. schrieb:
> Die Inder haben sich angepaßt und programmieren mit C++ .... das werde
> ich mir ganz sicher nicht mehr antun, zumal ich Windows sowieso hasse.

Was hat C++ nun mit Windows zu tun? Windows-only wäre eher C#/.NET...

S. B. schrieb:
> C ist nur noch im embedded Bereich und ein paar anderen Nischen;
> deswegen klappt's bei Dir auch nicht mehr dem C++ Job

Was genau klappt nicht?

S. B. schrieb:
> vielleicht bist
> Du auch schon zu alt - das weißt Du ganz genau - und Du kannst froh
> sein, daß Du Deine sichere Stellung im Embedded Segment gefunden hast,
> weil Du sonst nämlich nichts mehr bekommst, schon gar nicht C++, wenn Du
> bisher haupt- oder nebensächlich C programmierst.
> Macht nix, Du bist so von Dir überzeugt, daß Du nix mehr merkst -
> deswegen auch gar kein Versuch mehr im geliebten C++ Segment zu landen!

Du wirst immer lächerlicher.
Keine Angst, mit C++ kommst du überall unter, ist doch ein großer Teil 
der verbreiteten Software im Desktop- und Serverbereich in dieser 
Sprache geschrieben.

S. B. schrieb:
> wie gesagt, ich habe das bei mehreren Firmen so erlebt - da war Visual
> C++ klare Vorgabe!

C++ ist trotzdem nicht mit Visual C++ gleichzusetzen, dass du es noch so 
oft wiederholst, macht es auch nicht wahrer, und zeugt nur von absoluter 
Ahnungslosigkeit. Aber gut, die konnte man ja schon erkennen als du dich 
gewundert hast, dass dein C-Programm nicht kompiliert, obwohl du doch 
angeblich primät mit C arbeitest.
Und nur weil manche Firmen halt mit Visual C++ (möglicherweise auch noch 
C++/CLI) arbeiten, heißt das immer noch nicht, dass C++ auch nur 
ansatzweise irgenwas mit MS zu tun hat...

S. B. schrieb:
> Warum nur ist im Embedded Bereich immer noch C angesagt, wenn C++ doch
> so toll ist?! Warum nur?

Weil es nicht für alle Plattformen Compiler gibt und weil es oft 
Legacycode gibt, aber das hab ich dir ja oben schon erklärt. Und 
natürlich auch weil es ahnungslose Leute wie dich gibt die unbelegten 
Bullshit von angeblich laufzeitintensivem C++ glauben. Gibt ja auch noch 
genug Firmen die kein Test Driven Development machen, weil man das vor 
30 Jahren auch nicht gemacht hat.
Aber keine Angst, im professionellen Embeddedbereich nutzen mehr C++ als 
du vermutlich denkst.

S. B. schrieb:
> Macht nix, C++ ist supi, C ist übel und Java ist s***e, so simpel ist
> Deine Logik ...

Komisch, dabei hab ich doch genau das mit C und C++ so nie geschrieben, 
lediglich, dass C++ besser als C ist, weder, dass das eine supi wäre, 
noch, dass das andere übel wäre.
Aber mit einem hast du immerhin recht, Java ist tatsächlich Kacke.

S. B. schrieb:
> aber dann würde ich doch besser nichts schreiben :-)

Wenn du schon meine Postings kopieren musst, solltest du zumindest keine 
Lügen verbreiten. Oder halt einfach mal nix schreiben, lieber bewerben, 
damit du wieder einen Job bekommst.

von vn nn (Gast)


Lesenswert?

S. B. schrieb:
>> Der andere bemüht sich zumindest Argumente zu bringen
> hoffentlich sind Deine Lösungen im embedded Bereich besser als Deine
> pauschalen Hinweise wie Compiler 'richtig' einstellen, etc.
> Blabla kann jeder.

Nochmal: du wunderst dich ernsthaft dass dein Programm nicht 
funktioniert, wenn du die nötigen Header nicht includest, und machst dem 
Compiler und mir einen Vorwurf?
Dir ist halt einfach nicht zu helfen.

von S. B. (piezokristall)


Lesenswert?

> Nochmal: du wunderst dich ernsthaft dass dein Programm nicht
> funktioniert, wenn du die nötigen Header nicht includest, und machst dem
> Compiler und mir einen Vorwurf?
schau Dir den Thread nochmal genau an!
Das ist nicht mein Programm, sondern das Programm des TO, das beim TO 
unter Windows CodeBlocks ohne die Programmzeile #include <string.h> 
auskommt.

Meine Programmverbesserung steht im Post Datum: 22.01.2019 13:05
Dort habe ich auch nix falsch gemacht, sondern was konkret richtiges in 
Bezug auf das Problem des TO geschrieben, was Du ja nicht kannst - der 
Thread ist ja schon sehr lang und das Problem des TO ist ja mittlerweile 
gelöst.

Ich vermute, daß hat mit der ANSI-Konformität des CodeBlock-Compiler zu 
tun, von dem der CodeBlock-Compiler abweicht.
Genau so etwas gibt es bei Java wegen der JRE nicht; also ein klarer 
Vorteil insbesondere auf verschiedenen Plattformen.
Also leichte Compileräbänderungen und schon kann das ganze Programm 
anders aussehen bzw. nicht mehr funktionieren.
Bei C++ Compilern wird es wohl nicht anders sein.

Und Du sagst es ja selbst, string.h gehört mit rein - die Einstellung 
bei der es wie bei CodeBlocks ohne string.h. funktioniert möge man mir 
doch bitte mal für GNU C zeigen!

Die Frage, warum das bei CodeBlocks anders ist, hast Du bis jetzt noch 
nicht beantwortet und kannst es auch nicht; weil Dich die ganze Thematik 
nicht wirklich interessiert, so habe ich jedenfalls den Eindruck.
Du postest sehr viel, aber eben nur viel blabla - da kann ich auch den 
Fernseher einschalten und hab mehr davon :-)

von S. B. (piezokristall)


Lesenswert?

> Aber keine Angst, im professionellen Embeddedbereich nutzen mehr C++ als
> du vermutlich denkst.
richig, weil auch der Speicher im Embeddedbereich stetig zunimmt und 
damit Leute wie Du, die von C bedingt Ahnung haben auch mit an Board 
bleiben und sich nicht den C++ Job besorgen; selbst das machst Du ja 
nicht.
Ist nicht schlimm, aber man sollte es wenigstens zugeben .... deswegen 
überlasse ich ja auch den anderen C++. Alles geht eben nicht.
Jedem seine Lieblingssprache.

von Walter T. (nicolas)


Lesenswert?

Ich habe irgendwie den Teil verpasst, wo ihr das mit den Zeichensätzen 
erschöpfend geklärt habt, dass dieser Thread jetzt für andere 
Fragestellungen offen ist.

von vn nn (Gast)


Lesenswert?

S. B. schrieb:
> schau Dir den Thread nochmal genau an!
> Das ist nicht mein Programm, sondern das Programm des TO, das beim TO
> unter Windows CodeBlocks ohne die Programmzeile #include <string.h>
> auskommt.

Und trotzdem wunderst DU dich, dass es bei DIR nicht funktioniert.

S. B. schrieb:
> sondern was konkret richtiges in
> Bezug auf das Problem des TO geschrieben, was Du ja nicht kannst - der
> Thread ist ja schon sehr lang und das Problem des TO ist ja mittlerweile
> gelöst.

Achso, was ich also nicht kann. Liegt nicht etwa daran, dass sein 
Problem schon gelöst ist.

S. B. schrieb:
> Ich vermute, daß hat mit der ANSI-Konformität des CodeBlock-Compiler zu
> tun, von dem der CodeBlock-Compiler abweicht.

Ach ne, sag bloß? C wird übrigens primär von der ISO standardisiert, 
"ANSI-C" bezeichnet gang, ganz was altes... aber gut, du denkst ja auch 
"C++" und "Visual C++" wäre das gleiche und C++ hätte was mit Windows zu 
tun, also who cares.

S. B. schrieb:
> Genau so etwas gibt es bei Java wegen der JRE nicht; also ein klarer
> Vorteil insbesondere auf verschiedenen Plattformen.

Nochmal, was genau soll das nicht standardkonforme Verhalten eines 
C-Compilers mit der  JRE zu tun haben?
Wer hätte das gedacht, nicht standardkonformer Code produziert 
fehlerhafte Ergebnisse, da ist die Sprache schuld!!11!1elf
Preisfrage, was passiert, wenn die JRE auf der Zielplattform nicht dem 
Sprachstandard entspricht?

S. B. schrieb:
> Also leichte Compileräbänderungen und schon kann das ganze Programm
> anders aussehen bzw. nicht mehr funktionieren.

Falsch, so lange man nur im Sprachstandard definierte Dinge tut, 
passiert nichts. Wenn du Dinge machst, die in der Sprache nicht 
definiert sind, geht das auch in Java nach hinten los.

S. B. schrieb:
> Bei C++ Compilern wird es wohl nicht anders sein.

Da C++ wesentlich strenger ist als C, ist das Problem eher kleiner denn 
größer. Aber das wüsstest du, würdest du über Themen reden, bei denen du 
dich auskennst.

S. B. schrieb:
> Und Du sagst es ja selbst, string.h gehört mit rein - die Einstellung
> bei der es wie bei CodeBlocks ohne string.h. funktioniert möge man mir
> doch bitte mal für GNU C zeigen!

Welche Einstellung? Warum soll es eine Einstellung geben, mit der 
fehlerhafter Code plötzlich kompiliert, nur weil es bei einem anderen 
Compiler zufälligerweise funktioniert?

S. B. schrieb:
> Die Frage, warum das bei CodeBlocks anders ist, hast Du bis jetzt noch
> nicht beantwortet und kannst es auch nicht;

Doch: weil es halt zufällig so ist, denn "undefined behaviour" darf auch 
zufällig funktionieren. Hab ich dir auch schon lang und breit erklärt, 
dass du den Compiler halt falsch bedienst.

S. B. schrieb:
> weil Dich die ganze Thematik
> nicht wirklich interessiert, so habe ich jedenfalls den Eindruck.
> Du postest sehr viel, aber eben nur viel blabla - da kann ich auch den
> Fernseher einschalten und hab mehr davon

Ich frag dich schon zum hundertsten mal, ob du denn endlich deine 
absurden Behauptungen (Performance und Verbreitung von 
Programmiersprachen, etc. pp.) sachlich belegen kannst, was du nach wie 
vor verweigerst, und unterstellst mir, mich nicht dafür zu 
interessieren? Ganz großes Kino. Ja, setz dich vor den Fernseher und 
schau das Dschungelcamp, ist besser.

S. B. schrieb:
> richig, weil auch der Speicher im Embeddedbereich stetig zunimmt und
> damit Leute wie Du, die von C bedingt Ahnung haben

Süß. Woher nimmst du die Behauptung, ich würde kein C können? Und kannst 
du jetzt endlich, endlich die strunzdämliche Behauptung belegen, C++ 
würde so ganz doll viel Speicher benötigen?

S. B. schrieb:
> und sich nicht den C++ Job besorgen; selbst das machst Du ja
> nicht.

Was genau mach ich nicht? Kannst du eigentlich lesen, was ich schreibe? 
Ist Deutsch eine Fremdsprache für dich, sollen wir lieber auf Englisch 
wechseln?

S. B. schrieb:
> Ist nicht schlimm, aber man sollte es wenigstens zugeben ...

Was genau soll man zugeben?

S. B. schrieb:
> deswegen
> überlasse ich ja auch den anderen C++. Alles geht eben nicht.
> Jedem seine Lieblingssprache.

Wohl eher, weil deine abstrusen Behauptungen daran zweifeln lassen, dass 
du IRGENDEINE Sprache vernünftig kannst. C kann jedenfalls nicht dein 
Talent sein, wunderst du dich doch, dass fehlerhafter Code komische 
Dinge macht. C++ kann es auch sein, denkst du doch, es würde auf 
wundersame Weise ganz dolle viel Speicher brauchen, wofür auch immer. 
Java? Vielleicht, aber daran wachsen die Zweifel auch, behauptest du 
doch, unspezifizierte Dinge zu tun würde dort funktionieren.

von vn nn (Gast)


Lesenswert?

Walter T. schrieb:
> Ich habe irgendwie den Teil verpasst, wo ihr das mit den Zeichensätzen
> erschöpfend geklärt habt, dass dieser Thread jetzt für andere
> Fragestellungen offen ist.

Die Zeichensätze wurden im Nachbarthread, auf den verwiesen wurde, schon 
ziemlich breit erklärt. Kompilierst du dein Programm für einen 
Zeichensatz, verwendest aber dann einen anderen, kommt halt Unsinn raus. 
Unschön, ist aber leider derzeit so.

von S. B. (piezokristall)


Lesenswert?

> Wohl eher, weil deine abstrusen Behauptungen daran zweifeln lassen, dass
> du IRGENDEINE Sprache vernünftig kannst.
vermutlich mehr wie Du :-)

> Woher nimmst du die Behauptung, ich würde kein C können?
An der nachfolgenden Bemerkung:
> Und kannst du jetzt endlich, endlich die strunzdämliche Behauptung
> belegen, C++ würde so ganz doll viel Speicher benötigen?
Du siehst es am Quellcode von C++ und an Laufzeitmessungen (wohlgemerkt 
nicht des Compilers, sondern des Objektcodes).
Speziell bei älteren Mikrocontroller funzt C++ wegen des Speicherbedarfs 
nicht. Bei modernen Controller spielt es keine Rolle mehr und weil C++ 
in ist haben Dienstleister so wie Du einen ganz besonderen Augenmerk 
drauf :->

> Doch: weil es halt zufällig so ist, denn "undefined behaviour" darf auch
> zufällig funktionieren. Hab ich dir auch schon lang und breit erklärt,
> dass du den Compiler halt falsch bedienst.
undedined behaviour, LOL, na klar.
Ich verwende nicht CodeBlocks unter Windows wie der TO, sondern GNU C 
unter Linux und mein Programm läuft - wenn man nur lesen könnte :(


> Die Zeichensätze wurden im Nachbarthread, auf den verwiesen wurde, schon
> ziemlich breit erklärt.
welcher denn?

> Kompilierst du dein Programm für einen
> Zeichensatz, verwendest aber dann einen anderen, kommt halt Unsinn raus.
> Unschön, ist aber leider derzeit so.
na ja, das hängt vom Quellcode ab und von der Zielsetzung des Programms.


> Ich habe irgendwie den Teil verpasst, wo ihr das mit den Zeichensätzen
> erschöpfend geklärt habt, dass dieser Thread jetzt für andere
> Fragestellungen offen ist.
In puncto C kann ich Dir einiges beantworten - am besten konkretes 
Beispiel.
Bei C++ (und vielleicht auch C) kann Dir sicherlich vn nn(Gast) 
weiterhelfen oder auch nicht :-)
Da wird sich dann zeigen, was er kann :-)

von Vn N. (wefwef_s)


Lesenswert?

S. B. schrieb:
> Du siehst es am Quellcode von C++

Ach, du kannst also am Quellcode ablesen, dass C++ doll viel Speicher 
braucht,  denn optimierende Compiler und zero cost abstraction wurden ja 
noch nicht erfunden. Du bist ja ein richtiger Experte, schreibst 
wahrscheinlich in C auch alles in eine riesige Funktion anstatt sauber 
zu gliedern,  weil du von inlining und Optimizer noch nie gehört hast...

S. B. schrieb:
> an Laufzeitmessungen

Die du zwar ständig versprichst, aber nicht liefern kannst.

S. B. schrieb:
> undedined behaviour, LOL, na klar.

Was ist es denn deiner Meinung nach, wenn du den passenden Header nicht 
includest und dich dann Wunderer dass es nicht geht?

S. B. schrieb:
> erwende nicht CodeBlocks unter Windows wie der TO, sondern GNU C unter
> Linux und mein Programm läuft - wenn man nur lesen könnte

Na wenns doch eh geht,  was beschwerst du dich dauernd dass C ganz böse 
ist und bei dir nicht geht?

S. B. schrieb:
> welcher denn?

Wurde oben verlinkt.  Schau halt nach.

S. B. schrieb:
> das hängt vom Quellcode ab und von der Zielsetzung des Programms.
>
>>

Ach ne, das Resultat hängt vom Quellcode ab. Sag bloß.

S. B. schrieb:
> In puncto C kann ich Dir einiges beantworten - am besten konkretes
> Beispiel.

Könntest du schon beantworten, warum der Aufruf einer nicht deklarierten 
Funktion undefiniert ist, oder bereitet dir das immer noch 
Kopfzerbrechen?

S. B. schrieb:
> Bei C++ (und vielleicht auch C) kann Dir sicherlich vn nn(Gast)
> weiterhelfen

Ich dachte, du bist C++-Experte und kannst am Quellcode schon den 
Resourcenverbrauch ablesen?

von S. B. (piezokristall)


Lesenswert?

> Ach, du kannst also am Quellcode ablesen, dass C++ doll viel Speicher
> braucht,  denn optimierende Compiler und zero cost abstraction wurden ja
> noch nicht erfunden.
schau mal hier: 
https://stackoverflow.com/questions/418914/why-is-c-so-fast-and-why-arent-other-languages-as-fast-or-faster
auch anderen fällt auf, daß C schneller ist - nur Assembler ist 
schneller als C, da maschinennäher .... nur Dir fällt vor lauter C++ 
Hype nichts mehr auf.
C++ hat andere Vorteile gegenüber C, die Du gar nicht ansprichst!
Mach das doch, wenn C++ Deine Herzensangelegenheit ist!

> Die du zwar ständig versprichst, aber nicht liefern kannst.
Du kennst den Unterschied zwischen runtime und compile-time nicht und 
deswegen eierst Du rum, weil bei C++ ja alles gut sein muß!
Schau mal hier, da wird der Unterschied erklärt:
https://www.quora.com/What-is-the-difference-between-runtime-and-compile-time

> Was ist es denn deiner Meinung nach, wenn du den passenden Header nicht
> includest und dich dann Wunderer dass es nicht geht?
OMG, ich hab den Header includiert! Mir ist aber aufgefallen, daß das 
bei CodeBlocks gar nicht notwendig ist und das hat mich etwas gewundert 
.... wie oft muß ich das hier noch posten bis Du es endlich kapierst?!

> Na wenns doch eh geht,  was beschwerst du dich dauernd dass C ganz böse
> ist und bei dir nicht geht?
Sag mal, kannst Du nicht lesen? Bei mir funktioniert es nur mit der 
zusätzlichen include-Anweisung und beim TO geht es ohne diese!
Interessiert Dich vor lauter f**k C++ Geilheit natürlich nicht, warum 
das so ist ?!
Und das sagt dann sehr vieles aus ):

> Ich dachte, du bist C++-Experte und kannst am Quellcode schon den
> Resourcenverbrauch ablesen?
wenn Du mir nicht glaubst lies doch im Netz wie andere das sehen - wie 
gesagt C++ hat Vorteile, aber sicher nicht runtime der fertigen 
Programme; da bist Du auf dem Holzweg.

von vn nn (Gast)


Lesenswert?

S. B. schrieb:
> schau mal hier:
> 
https://stackoverflow.com/questions/418914/why-is-c-so-fast-and-why-arent-other-languages-as-fast-or-faster
> auch anderen fällt auf, daß C schneller ist

Uiuiuiui, na wenns auf Stackoverflow steht, muss es ja stimmen! Selbst 
kannst du also nicht mehr argumentieren?
Aber bitte, dann zerlegen wir deine reichlich dünne Suppe halt mal (ich 
beschränk mich mal aus Zeitgründen auf das "Top"-Posting):

> Newer languages which have support for garbage collection, dynamic typing > and 
other facilities which make it easier for the programmer to write >
> programs.

Gegessen. C++ hat keinen Garbagcollector, auf Laufzeitdynamik kann man 
komplett verzichten und alles zur Compilezeit machen. Ein Expere halt, 
wie du.

> The catch is, there is additional processing overhead which will degrade
> the performance of the application. C doesn't have any of that

Oh, eine leere Behauptung ohne Beleg, woher kennen wir das nur? Welcher 
"additional processing overhead"? Oh großer "S. B. (piezokristall)", 
kannst du diese Behauptung endlich, endlich Argumentieren, nachdem du 
sie immer und immer wieder aufstellst?

> That said, many languages and platforms, such as Java (with its Java
> Virtual Machine) and .NET (with its Common Language Runtime) have
> improved performance over the years with advents such as just-in-time
> compilation which produces native machine code from bytecode to achieve
> higher performance.

Oh, achso, der redet nur von Java und .NET, na sag das doch gleich, 
warum verlinkst du dann drauf?

Ach, dann nehmen wir halt das zweite Posting auch noch dran:

> C won't
>    Check array index bounds
>    Check for uninitialized variable values
>    Check for memory leaks
>    Check for null pointer dereference

Tja, und da ich das in C alles manuell machen muss, während es in C++ 
der Compiler für mich tut (und wunderbar optimieren kann, macht es den 
Code blöderweise schneller und nicht langsamer. Defensive Programming 
würde in C von mir verlangen, dass ich in der aufgerufenen Funktion die 
Länge meines Arrays checke, auch wenn die aufrufende Funktion das schon 
getan hat (sie könnte ja auch von einer anderen aufgerufen werden) - in 
C++ erkennt der Compiler das und wirft einen raus wenn möglich.

Der Rest: Geschwafel über Java, und Designentscheidungen von C, die 
selbst die Macher von C heute ganz anders sehen.

Schade, ich dachte jetzt kommt endlich die Umwerfende Argumentation 
deiner Behauptung auf die ich schon so lange warte, stattdessen gehts 
dort nur um Java und .NET.

S. B. schrieb:
> nur Assembler ist
> schneller als C, da maschinennäher

Ich muss dich enttäuschen, aber um an die Geschwindigkeit eines guten 
C-Compilers heranzukommen müsstest du schon einer der absoluten 
Top-Assembler-Programmierer sein, und selbst dann wäre es fraglich. Wie 
so viele deiner Behauptungen.

S. B. schrieb:
> nur Dir fällt vor lauter C++
> Hype nichts mehr auf.

Äh, Hype, bitte wo?

S. B. schrieb:
> C++ hat andere Vorteile gegenüber C, die Du gar nicht ansprichst!

Doch, genau das habe ich getan, seitdem drehst du am Rad und wirfst hier 
mit Kot um dich. Falls du dich erinnerst: in meinem Ursprungsposting hab 
ich kurz mal auf die Vorteile von C++ verwiesen.

S. B. schrieb:
> Mach das doch, wenn C++ Deine Herzensangelegenheit ist!

Herzensangelegenheit? Nö. Ein Werkzeug halt. Keine Ahnung warum du so 
durchdrehst, und ständig irgendwelche Behauptungen aufstellst, die dann 
ja doch leer bleiben. Deine Behauptungen über mich sind ja ähnlich 
fundiert wie die über diverse Programmiersprachen.

S. B. schrieb:
> Du kennst den Unterschied zwischen runtime und compile-time nicht und
> deswegen eierst Du rum, weil bei C++ ja alles gut sein muß!
> Schau mal hier, da wird der Unterschied erklärt:
> https://www.quora.com/What-is-the-difference-between-runtime-and-compile-time

Du wirst immer lustiger, warum genau soll ich den Unterschied nicht 
kennen, wie kommst du zu der Behauptung? Und was hat das nun mit dem 
Thema zu tun?
Ich frage dich nun schon unzählige Male nach einem Beleg für deine 
Behauptung eines schlechteren Laufzeitverhaltens, und du rotzt diesen 
unpassenden Link hier rein, anstatt deine Behauptung endlich zu 
argumentieren?

S. B. schrieb:
> OMG, ich hab den Header includiert! Mir ist aber aufgefallen, daß das
> bei CodeBlocks gar nicht notwendig ist und das hat mich etwas gewundert
> .... wie oft muß ich das hier noch posten bis Du es endlich kapierst?!

Und doch hast du unzählige Male herumgejammert dass C ganz pöse 
unportabel ist, weil oh Gott, undefiniertes Verhalten nun mal 
undefiniert ist.

S. B. schrieb:
> Sag mal, kannst Du nicht lesen? Bei mir funktioniert es nur mit der
> zusätzlichen include-Anweisung und beim TO geht es ohne diese!

Ja, und ich erklär dir schon zum hundertsten Mal, dass es völlig egal 
ist, wenn bei jemandem fehlerhafter Code zufälligerweise das erwartete 
verhalten zeigt, wichtig ist lediglich, dass richtiger Code 
funktioniert.

S. B. schrieb:
> Interessiert Dich vor lauter f**k C++ Geilheit natürlich nicht, warum
> das so ist ?!

Ich hab dir schon oft genug warum es so ist, du ignorierst es nur 
ständig.
Würde mich interessieren, wo du diese "f**k C++ Geilheit" verortest. Nur 
weil du es nicht schaffst, Vor- und Nachteile von Programmiersprachen 
sachlich und korrekt zu diskutieren? Nur weil du ständig Behauptungen 
(über alle möglichen Programmiersprachen, nicht nur C++) in den Raum 
wirfst, immer und immer wieder, die du bis jetzt nie, aber auch wirklich 
nie belegen konntest? Das höchste der Gefühle waren bisher hingerotzte, 
Themenverfehlende Links...

S. B. schrieb:
> wenn Du mir nicht glaubst lies doch im Netz wie andere das sehen

Kannst du es nicht endlich, endlich selbst begründen? Ist es wirklich so 
schwer, bist du wirklich so ahnungslos? Warum stellst du dann laufend 
diese Behauptungen auf? Oder wenn du das schon nicht schaffst, stell 
doch zumindest mal einen Link rein wo jemand das mit Argumenten erklärt 
(wo du es schon nicht schaffst). Aber bitte nicht wieder irgendeinen 
Stackoverflow-Link, der sich eigentlich auf Java und .NET bezieht.

S. B. schrieb:
> wie
> gesagt C++ hat Vorteile, aber sicher nicht runtime der fertigen
> Programme; da bist Du auf dem Holzweg.

Ständiges wiederholen unbelegter Behauptungen macht diese auch nicht 
besser. Beweis es endlich. Ach ja, hast du vorher nicht noch vom 
immensen Speicherverbrauch geschrieben? Das bitte auch gleich.

Und dann bitte die restlichen Behauptungen: C++ wäre ein Superset von C, 
C++ hat irgendwas mit Microsoft zu tun, C++ nimmt keiner weil Java ja 
der Trend ist (doof nur, dass dein Webbrowser vermutlich in C++ 
geschrieben ist), C wird nicht weiterentwickelt (ach ne, haben wir ja eh 
schon entkräftet), C++ hat sich wegen bunter Fenster durchgesetzt 
(genau, deswegen nimmt man es ja auch im Serverbereich, du meinst wohl 
eher Java und .NET?), C++ hat sich wegen der tollen IDE durchgesetzt 
(welche soll das nochmal sein, gcc + vim?), etc. pp.

von S. B. (piezokristall)


Lesenswert?

> Ständiges wiederholen unbelegter Behauptungen macht diese auch nicht
> besser.
das machst Du leider:
"Und trotzdem wunderst DU dich, dass es bei DIR nicht funktioniert."
Immerhin scheinst Du es jetzt teilweise kapiert zu haben, weil ich das 
100mal wiederholt habe - es funktioniert bei mir, weil ich string.h 
inkludiert habe und nochmal: Beim TO funktioniert es unter CodeBlocks 
eben auch ohne string.h - darum geht es HIER!
Deine Antwort darauf: Ja das ist dann Zufall, undefined behaviour, 
fehlerhafter Code bei CodeBlocks eben.
Na, das ist ja mal eine tolle Antwort!
Mit anderen Worten: Du weißt es nicht (und ich leider auch nicht - 
deswegen frage ich danach). Das ist der Unterschied.

> Ja, und ich erklär dir schon zum hundertsten Mal, dass es völlig egal
> ist, wenn bei jemandem fehlerhafter Code zufälligerweise das erwartete
> verhalten zeigt, wichtig ist lediglich, dass richtiger Code
> funktioniert.
aha, es ist also fehlerhafter Code, wenn es bei CodeBlocks ohne string.h 
funktioniert? Ist das jetzt Deine Aussage? Ja oder nein - oder was 
jetzt?


> Selbst kannst du also nicht mehr argumentieren?
Du kapierst den Unterschied zwischen runtime und compile-time nicht und 
machst deshalb immer wieder den gleichen Fehler, mindestens 100mal, dazu 
kommen wir gleich noch.

> Tja, und da ich das in C alles manuell machen muss, während es in C++
> der Compiler für mich tut (und wunderbar optimieren kann, macht es den
> Code blöderweise schneller und nicht langsamer.
das kann schon, daß die compile-time aufgrund der Weiterentwicklung der 
C++ Compiler besser ist als mit einem C Compiler mit C11 Standard - das 
bezweifle ich nicht - es geht aber auch um die Runtime der Programme und 
das ist was anderes.
Richtig und in C gibt es keine Weiterentwicklung seit 2011, C11 - und 
heute schreiben wir 2019! Oha! So sieht also Weiterentwicklung bei Dir 
aus?!
Fast 8 Jahre nix Neues!
Für mich ist das keine Weiterentwicklung und das geht auch nicht, weil 
irgendwann die Optimierung eines Compilers abgeschlossen ist.
Weiterhin kann ich natürlich C++ verwenden, weil C++ bequemer und in der 
Compilezeit heute besser ist als damals - aber nicht generell besser, 
genau das ist Dein Irrglaube!

> Und doch hast du unzählige Male herumgejammert dass C ganz pöse
> unportabel ist, weil oh Gott, undefiniertes Verhalten nun mal
> undefiniert ist.
jo, alles Zufall, alles undefinierbar, weil das in C nun mal so ist - 
sag doch besser 'ich weiß es leider nicht' anstelle dieses hochtrabenden 
Geschwafels von Undefinierbarkeit, usw. - Tip: meld Dich mal in der 
Politik an.

> Falls du dich erinnerst: in meinem Ursprungsposting hab
> ich kurz mal auf die Vorteile von C++ verwiesen.
Ich weiß es jetzt nicht genau, ist irgendwo am Anfang des Threads - da 
empfiehlst Du in Deinem ersten Post zu diesem Thread den TO:
Nimm C++, in C geht das nicht richtig, viel zu kompliziert.
Na, offenbar geht es schon! Du warst nicht in der Lage ihm zu helfen vor 
lauter C++ Hype!


> Würde mich interessieren, wo du diese "f**k C++ Geilheit" verortest. Nur
> weil du es nicht schaffst, Vor- und Nachteile von Programmiersprachen
> sachlich und korrekt zu diskutieren?
das fängt schon mit Deiner Empfehlung an bei einem simplen 
Programmierproblem die Sprache zu wechseln!

> Oh großer "S. B. (piezokristall)", ...
Ja, Deine Sachlichkeit läßt mindestens genauso zu wünschen übrig!
Richtig, an Sachlichkeit mußt Du auch noch arbeiten.

> Ein Expere halt, wie du.
siehst Du, ebenfalls jemand, der so seine Zweifel hat. Ich bezweifle, 
daß die Runtime der vom C++ Compiler optimierten C++ Programme wirklich 
besser als identische C Programme ist - bitte, wenn Du es besser weißt, 
beweise es doch auch einmal mit Quellen!

> Beweis es endlich. Ach ja, hast du vorher nicht noch vom
> immensen Speicherverbrauch geschrieben?
Hast Du Dir mal die CAD-Suiten, usw. angeschaut? Da spielt Speicher 
keine Rolle - das war früher ganz anders, da gab es eben nur ein paar 
Kilobyte an Speicher genauso wie bei Embedded teilweise noch heute!
Und die C++ Compiler waren in der Anfangszeit ebenfalls grottig.
Inbesondere bei größeren Programmen ist der Unterschied nun wirklich 
spürbar zu merken, u.a. KDE - aufgrund von anderen Nachteilen hat sich C 
nun mal nicht durchgesetzt bzw. versuchte durch C99, C11 
Weiterentwicklung ein paar C++ Konzepte zu übernehmen.

> Und dann bitte die restlichen Behauptungen: C++ wäre ein Superset von C,
was soll es denn sonst sein? Eine Untermenge? LOL

> C++ hat irgendwas mit Microsoft zu tun,
Indirekt - C++ wurde vom Marktführer Microsoft dankbar aufgenommen.
Deine Software-Suiten, usw. die werden nun mal mit Visual C++ compiliert 
und nicht mit GNU C++, Borland C++ oder weiß der Geier was - obwohl das 
auch funktionieren würde .... vielleicht, wenn da nicht dieses zufällige 
böse "undefined behaviour" der anderen Compiler wäre - warum soll man 
das Risiko eingehen, wenn es Visual C++ kostenlos zum Download gibt, 
alles reibungslos funktioniert und das zusammen mit Windows aus einem 
Guß ist?


C++ nimmt keiner weil Java ja der Trend ist (doof nur, dass dein 
Webbrowser vermutlich in C++ geschrieben ist), C wird nicht 
weiterentwickelt (ach ne, haben wir ja eh schon entkräftet),
ja, ja, wir schreiben das Jahr 2019, letzte Weiterentwicklung 2011, 
hust, röchel.

Dillo (https://www.dillo.org/) ist ein Browser, der teilweise in C 
geschrieben ist. Das ist dann mal 'Geschwindigkeit'!
Oder Best of the best in Assembler:
https://kolibrios.org/en/
Das ist dann die hohe Kunst!

Nur leider kommen die an die Funktionalität der Standardprogramme gar 
nicht heran, vieles geht noch nicht und wird nie funktionieren - wie 
denn auch als One-Man-Show!

> C++ hat sich wegen bunter Fenster durchgesetzt
> (genau, deswegen nimmt man es ja auch im Serverbereich, du meinst wohl
> eher Java und .NET?),
Serverbereich weiß ich nicht, da hat Linux wohl etwas Boden gut gemacht? 
- aber ansonsten gilt das Marktführerprinzip, also Android vor IOS, 
Microsoft vor Apple, usw.

> C++ hat sich wegen der tollen IDE durchgesetzt
> (welche soll das nochmal sein, gcc + vim?), etc. pp.
hab ich doch schon x-mal geschrieben: Visual C++
Microsoft ist Marktführer, warum soll man sich dann auf Experimente mit 
anderen Compilern einlassen - nur, weil die 5% besser sind?
Okay, in Deinem Embedded Bereich kannst Du das natürlich gerne machen 
und Du scheinst ja auch quasi Dein eigener Chefe zu sein.
Der Marktführer wird genommen, also Windows, IE oder Firefox, MS Office, 
usw. - Punkt; so will es nun mal die Mehrheit!
Du kannst natürlich gern was anderes wählen, aber im Prinzip dann 
berufliches Abseits, falls Du aus unerfindlichen Gründen doch nochmal 
wechseln mußt.


Achso, Sicherheit ist ja in C++ ganz groß geschrieben (eines Deiner 
TOP-Argumente zu Anfang des Threads);
gab's da nicht mal einen Ariane 5 Absturz?
Dein Englisch ist ja besser, welche Programmiersprache haben die da 
verwendet? Hört sich stark nach C++ an, aber mein Englisch ist nicht so 
gut, vielleicht täusche ich mich ja:
http://computer-programming-forum.com/44-ada/626c282aa05b4b23-15.htm

: Bearbeitet durch User
von Vn N. (wefwef_s)


Lesenswert?

S. B. schrieb:
> Immerhin scheinst Du es jetzt teilweise kapiert zu haben, weil ich das
> 100mal wiederholt habe - es funktioniert bei mir, weil ich string.h
> inkludiert habe und nochmal: Beim TO funktioniert es unter CodeBlocks
> eben auch ohne string.h - darum geht es HIER!

Tja, und ich hab dich nun schon 100 Mal gefragt, wo dein Problem damit 
ist, dass es bei ihm zufällig funktioniert?
CodeBlocks ist ja nicht mal ein Compiler sondern eine IDE, wir wissen 
also genau gar nix über sein Setup, für dich ist aber C Schrott 
deswegen.

S. B. schrieb:
> Deine Antwort darauf: Ja das ist dann Zufall, undefined behaviour,
> fehlerhafter Code bei CodeBlocks eben.
> Na, das ist ja mal eine tolle Antwort!
> Mit anderen Worten: Du weißt es nicht (und ich leider auch nicht -
> deswegen frage ich danach). Das ist der Unterschied.

"undefined behaviour" ist ein Begriff aus dem C-Standard. Aber das weißt 
du halt nicht, weil du kein C kannst. Und nein, nicht CodeBlocks (oder 
der Compiler, den der TS unbekannterweise verwendet) ist fehlerhaft, 
sondern sein Code, wie wir ja schon festgestellt haben.

S. B. schrieb:
> aha, es ist also fehlerhafter Code, wenn es bei CodeBlocks ohne string.h
> funktioniert? Ist das jetzt Deine Aussage? Ja oder nein - oder was
> jetzt?

Natürlich ist sein Code fehlerhaft, dass es bei einzelnen Compilern 
zufällig funktioniert, ist lt. Standard nun mal zulässig.

S. B. schrieb:
> Du kapierst den Unterschied zwischen runtime und compile-time nicht und
> machst deshalb immer wieder den gleichen Fehler, mindestens 100mal, dazu
> kommen wir gleich noch.

Äh bitte was? Du kennst offensichtlich nicht mal den Unterschied 
zwischen Compiletime, Compiletime-Optimization und Runtime Behaviour...

S. B. schrieb:
> das kann schon, daß die compile-time aufgrund der Weiterentwicklung der
> C++ Compiler besser ist als mit einem C Compiler mit C11 Standard - das
> bezweifle ich nicht - es geht aber auch um die Runtime der Programme und
> das ist was anderes.

Oh mein Gott, und wieder outest du dich als völlig ahnungslos.
Nein, die Zeit die der Compiler für C++ braucht ist sicher nicht 
geringer, eher höher, eben weil er zur Compilezeit bereits stärker 
optimieren kann, was wiederum die Laufzeit verringert. Du kannst aber 
nichtmal diese simplen Begriffe auseinander halten.

S. B. schrieb:
> Richtig und in C gibt es keine Weiterentwicklung seit 2011, C11 - und
> heute schreiben wir 2019! Oha! So sieht also Weiterentwicklung bei Dir
> aus?!

Nun, du hast ja so getan als hätte sich seit 1989 nichts mehr getan...

S. B. schrieb:
> Weiterhin kann ich natürlich C++ verwenden, weil C++ bequemer und in der
> Compilezeit heute besser ist als damals - aber nicht generell besser,
> genau das ist Dein Irrglaube!

Komisch, nicht nur dass ich nie geschrieben habe, dass C++ in jeder 
hinsicht besser wäre als C (wobei, ja, mir fällt da eigentlich kein Fall 
ein wo dem nicht so wäre), compiliert C++ ganz sicher nicht schneller. 
Aber du weißt halt nicht was Compiletimeoptimization ist (gibt es 
übrigens auch bei C), und lässt dich deswegen durch solche Begriffe 
verwirren.

S. B. schrieb:
> jo, alles Zufall, alles undefinierbar, weil das in C nun mal so ist -
> sag doch besser 'ich weiß es leider nicht' anstelle dieses hochtrabenden
> Geschwafels von Undefinierbarkeit, usw. - Tip: meld Dich mal in der
> Politik an.

Tipp: lern endlich C bevor du hier über diese Sprache fachsimpelst, dann 
lernst du, dass "undefined" Teil des Standards ist!

S. B. schrieb:
> Nimm C++, in C geht das nicht richtig, viel zu kompliziert.

Wo genau soll ich das geschrieben haben?

S. B. schrieb:
> Na, offenbar geht es schon! Du warst nicht in der Lage ihm zu helfen vor
> lauter C++ Hype!

Ach ja klar. Unternimm was gegen deinen Wahn.

S. B. schrieb:
> das fängt schon mit Deiner Empfehlung an bei einem simplen
> Programmierproblem die Sprache zu wechseln!

Wo soll ich das getan haben?

S. B. schrieb:
> Ja, Deine Sachlichkeit läßt mindestens genauso zu wünschen übrig!
> Richtig, an Sachlichkeit mußt Du auch noch arbeiten.

Wenn jemand tagelang unbelegten Müll behauptet und auch mehrfache 
Nachfrage nix belegen kann, hört die Sachlichkeit halt irgendwann auf.

S. B. schrieb:
> siehst Du, ebenfalls jemand, der so seine Zweifel hat.

Nochmal. Er redet von einem Garbage Collector. Einen solchen gibt es in 
C++ nicht. Er redet offensichtlich von Java und .NET.

S. B. schrieb:
> Ich bezweifle,
> daß die Runtime der vom C++ Compiler optimierten C++ Programme wirklich
> besser als identische C Programme ist

Und immer noch kannst du nicht mal im entferntesten Begründen, warum 
dies so sein soll. Weil du halt weder die eine noch die andere Sprache 
wirklich kennst.

S. B. schrieb:
> bitte, wenn Du es besser weißt,
> beweise es doch auch einmal mit Quellen!

Ach, jetzt soll ich noch Quellen für deinen Bullshit bringen? Aber 
bitte, gerne, informier dich einfach mal über Zero Cost Abstraction wie 
ich es dir schon lange nahelege, wenn du willst, kann ich dir auch ein 
Beispielprogramm zusammenhacken.
Liefer doch endlich nur ein einziges Argument für deine abstrusen 
Behauptungen.

S. B. schrieb:
> Hast Du Dir mal die CAD-Suiten, usw. angeschaut? Da spielt Speicher
> keine Rolle - das war früher ganz anders, da gab es eben nur ein paar
> Kilobyte an Speicher genauso wie bei Embedded teilweise noch heute!

Ja ne ist, klar, gerade bei solchen High-Performancetools soll 
Perfomance egal sein. Aber sonst gehts noch? Wäre dem so, wäre das Zeug 
ja in Java oder .NET geschrieben...

S. B. schrieb:
> Und die C++ Compiler waren in der Anfangszeit ebenfalls grottig

Bestreitet keiner.

S. B. schrieb:
> Inbesondere bei größeren Programmen ist der Unterschied nun wirklich
> spürbar zu merken, u.a. KDE

Achso, du spürst also, ob ein Programm in C oder C++ geschrieben ist? 
Esoteriker, oder was? Und KDE ist nicht etwa aufgrund von mehr Eyecandy 
langsamer?

S. B. schrieb:
> Deine Software-Suiten, usw. die werden nun mal mit Visual C++ compiliert
> und nicht mit GNU C++, Borland C++ oder weiß der Geier was - obwohl das
> auch funktionieren würde

Ja ne klar, keiner verwendet GCC. Ist klar.

S. B. schrieb:
> was soll es denn sonst sein? Eine Untermenge? LOL

Eine andere Sprache, die in Teilen kompatibel ist. Ein Superset wäre zu 
100% kompatibel, aber dann müsste man auch diverse Altlasten von C 
mitschleppen (die man dort eigentlich auch gern raus hätte, aber 
Kompatibilität und so).

Aber du kennst die Sprachen, über die du dich lang und breit auslässt 
halt nicht, weder die eine, noch die andere.

S. B. schrieb:
> vielleicht, wenn da nicht dieses zufällige
> böse "undefined behaviour" der anderen Compiler wäre

Nochmal, zum mitschreiben: Es gibt im Standard (insbesondere C, C++ ist 
da wesentlich strenger) Dinge, die sind "undefined", andere 
"implementation defined". Dort darf (!) der Compiler machen was er will, 
deshalb vermeidet man diese Dinge halt. Das hat nix mit Zufall zu tun. 
Wer fehlerhaften Input liefert, kriegt halt undefinierten Output, ganz 
einfach.

S. B. schrieb:
> warum soll man
> das Risiko eingehen, wenn es Visual C++ kostenlos zum Download gibt,
> alles reibungslos funktioniert und das zusammen mit Windows aus einem
> Guß ist?

Reibungslos? MSVC unterstützt nicht mal C99 und C++98 richtig, 20 Jahre 
nach deren Erscheinen, da hast du deinen Grund.

S. B. schrieb:
> Serverbereich weiß ich nicht, da hat Linux wohl etwas Boden gut gemacht?
> - aber ansonsten gilt das Marktführerprinzip, also Android vor IOS,
> Microsoft vor Apple, usw.

Nochmal, was hat das mit Windows oder Linux zu tun?

S. B. schrieb:
> hab ich doch schon x-mal geschrieben: Visual C++
> Microsoft ist Marktführer, warum soll man sich dann auf Experimente mit
> anderen Compilern einlassen - nur, weil die 5% besser sind?

MSVC ist kein toller Compiler, sondern der letzte Schrott, und wird 
außerhalb vom Klickbuntbereich auch nicht verwendet.

S. B. schrieb:
> Okay, in Deinem Embedded Bereich kannst Du das natürlich gerne machen

So ziemlich jeder, der vernünftig ist, verwendet GCC oder Clang, auch 
Projekte die aus historischen Gründen bei MSVC hängen, wechslen immer 
öfter, nicht nur bei C++, auch bei C. Das wüsstest du, wärst du vom 
Fach.

S. B. schrieb:
> und Du scheinst ja auch quasi Dein eigener Chefe zu sein.

Nö, lediglich kompetent genug die Werkzeuge vorzugeben.

S. B. schrieb:
> Firefox

Firefox ist schon lang kein Marktführer mehr.

S. B. schrieb:
> Du kannst natürlich gern was anderes wählen, aber im Prinzip dann
> berufliches Abseits, falls Du aus unerfindlichen Gründen doch nochmal
> wechseln mußt.

Du meinst so wie du? Nein, die Angst hab ich nicht. Man stellt sich ja 
breit auf und entwickelt sich weiter, deswegen bleibt man ja nicht aus 
purer Angst vor neuem bei C.

S. B. schrieb:
> Achso, Sicherheit ist ja in C++ ganz groß geschrieben (eines Deiner
> TOP-Argumente zu Anfang des Threads);
> gab's da nicht mal einen Ariane 5 Absturz?
> Dein Englisch ist ja besser, welche Programmiersprache haben die da
> verwendet? Hört sich stark nach C++ an, aber mein Englisch ist nicht so
> gut, vielleicht täusche ich mich ja:
> http://computer-programming-forum.com/44-ada/626c282aa05b4b23-15.htm

Interessant, was genau willst du der Welt damit mitteilen? Dass du 
ernsthaft denkst, irgendeine Sprache könnte Fehler zu 100% verhindern?
Und wieder beweist du durch deine Polemik völlige Ahnungslosigkeit.

Und wieder konntest du deine Behauptungen nicht untermauern. Nicht mal 
konntest du erklären, warum C++ so doll viel Speicher brauchen soll.

von Troll around the clock (Gast)


Lesenswert?

> Tja, und ich hab dich nun schon 100 Mal gefragt, wo dein Problem damit
> ist, dass es bei ihm zufällig funktioniert?
das klang vorher ganz anders; aber gut, falscher Code beim TO und der 
Rest dann alles reiner Zufall - genau das bezweifle ich.

> CodeBlocks ist ja nicht mal ein Compiler sondern eine IDE, wir wissen
> also genau gar nix über sein Setup, für dich ist aber C Schrott
> deswegen.
Na, irgendeinen Compiler scheint bei CodeBlocks eingestellt gewesen zu 
sein und das wäre ja mal interessant zu erfahren welcher?
GCC ist angeblich bei CodeBlocks sogar voreingestellt.


> für dich ist aber C Schrott deswegen.
wieder eine miese Unterstellung! Es geht mir hier lediglich um die 
Frage, warum das beim TO ohne string.h läuft.
Für Dich ist im Zweifel 'alles' illegal code, undefined behaviour, etc. 
- bißchen sehr einfach!

> Nochmal, zum mitschreiben: Es gibt im Standard (insbesondere C, C++ ist
> da wesentlich strenger) Dinge, die sind "undefined", andere
> "implementation defined". Dort darf (!) der Compiler machen was er will,
> deshalb vermeidet man diese Dinge halt.
Genau deswegen wäre es ja mal sehr interessant zu wissen, welchen 
Compiler der TO unter CodeBlocks überhaupt verwendet ?! Oder?
Vielleicht meldet er sich ja nochmal.
Bei mir: gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0

> Wo genau soll ich das geschrieben haben?
Dein Zitat:
"Im Zweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und
Geschwindigkeit."

Also indirekt eine Aufforderung besser gleich in C++ zu programmieren, 
obwohl das Miniprogramm in C nun wirklich nicht das Programmierproblem 
war und ist.

Und an diesen Blödsinn hat sich der ganze Streit entbrannt - für nix!
Teilweise muß ich mich korrigieren - auch die Runtime der C++ Programme 
scheint bei "guter" C++ Programmierung zu stimmen bzw. sogar noch besser 
zu sein - das geht aber nur bei wirklich guter Optimierung, was der C++ 
Compiler wohl mittlerweile auch schafft!
https://www.quora.com/Is-C++-slower-than-C-If-yes-is-the-difference-significant
Den Link hättest Du ja bringen können, hast Du aber nicht!
Komischerweise kommt in diesem Endlos-Link dann auch noch jemand zu dem 
Ergebnis, daß der Java-Compiler am Ende sogar noch besser ist was 
Optimierung anbelangt im Vergleich zu C++ .... und dafür gibt's dann 
:-):-):-) von mir.
Du siehst, so ganz eindeutig scheint das alles nicht zu sein!

> Dass du ernsthaft denkst, irgendeine Sprache könnte Fehler zu 100%
> verhindern?
Für Dich scheint C++ das A&O für alles und nichts zu sein und das ist es 
eben nicht - Sicherheit wohl eher mäßig, sonst hätte es den Absturz 
nicht gegeben.
Was nicht sein kann, passiert auch schon mal - Zufall eben, der falsche 
C++ Compiler bzw. Compilereinstellung war aber sicher nicht Schuld :-)
Du hast mit C++ weitaus mehr Möglichkeiten und kannst damit auch mehr 
ruinieren, ohne daß es einer sofort merkt.

Wie gesagt, die Compilervariante des TO würde mich mal interessieren (so 
er sich denn nochmal meldet) .... sonst führt das hier zu nix außer 
blabla.

von vn nn (Gast)


Lesenswert?

Troll around the clock schrieb:
> Dein Zitat:
> "Im Zweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und
> Geschwindigkeit."
>
> Also indirekt eine Aufforderung besser gleich in C++ zu programmieren,
> obwohl das Miniprogramm in C nun wirklich nicht das Programmierproblem
> war und ist.

Dein Textverständnis ist ähnlich gut wie deine Programmierkünste.

Troll around the clock schrieb:
> Und an diesen Blödsinn hat sich der ganze Streit entbrannt - für nix!

Nö, weil du ständig mit Kacke und unbelegten Behauptungen um dich 
wirfst.

Troll around the clock schrieb:
> Teilweise muß ich mich korrigieren - auch die Runtime der C++ Programme
> scheint bei "guter" C++ Programmierung zu stimmen bzw. sogar noch besser
> zu sein

Ach ne, jetzt auf einmal?

Troll around the clock schrieb:
> https://www.quora.com/Is-C++-slower-than-C-If-yes-is-the-difference-significant
> Den Link hättest Du ja bringen können, hast Du aber nicht!

Oh, ich bin aber ganz böse, ich hab den Link nicht gebracht!

Troll around the clock schrieb:
> Komischerweise kommt in diesem Endlos-Link dann auch noch jemand zu dem
> Ergebnis, daß der Java-Compiler am Ende sogar noch besser ist was
> Optimierung anbelangt im Vergleich zu C++ .... und dafür gibt's dann
> :-):-):-) von mir.
> Du siehst, so ganz eindeutig scheint das alles nicht zu sein!

Man kann natürlich für jeden Compiler ein Programm schreiben, das 
schlechter performt als auf einem anderen.

Troll around the clock schrieb:
> Für Dich scheint C++ das A&O für alles und nichts zu sein

Dass du es noch 10 mal wiederholst, macht es auch nicht wahrer. Warum 
verdammt nochmal versuchst du eigentlich, mir zu erklären was deiner 
Ansicht nach meine Meinung sein soll?

Troll around the clock schrieb:
> Sicherheit wohl eher mäßig, sonst hätte es den Absturz
> nicht gegeben.

Blödheit und mangelnde Tests kann keine Programmiersprache verhindern. 
Aber dass das für dich ein Zeichen mäßiger Sicherheit ist, sagt ja eh 
schon wieder alles über deine Kompetenz.

Troll around the clock schrieb:
> Was nicht sein kann, passiert auch schon mal - Zufall eben,

Richtig, deshalb gibts auch Tests, die kann keine Programmiersprache der 
Welt ersetzen, auch wenn du das zu glauben scheinst.

Troll around the clock schrieb:
> der falsche
> C++ Compiler bzw. Compilereinstellung war aber sicher nicht Schuld :-)

Wäre auch absurd, das anzunehmen.

Troll around the clock schrieb:
> Du hast mit C++ weitaus mehr Möglichkeiten und kannst damit auch mehr
> ruinieren, ohne daß es einer sofort merkt.

Juhu, schon wieder eine unbelegte Behauptung mehr. Poste doch mal ein 
Beispiel, vielleicht klappt es ja diesmal, ohne dass du wieder tagelang 
mit Kacke um dich werfen musst, bevor du feststellst dass du doch 
unrecht hattest.

Ich bin hier raus, deine Selbstüberschätzung gepaart mit absoluter 
Fachunkenntnis wird mir zu blöd.

von S. B. (piezokristall)


Lesenswert?

> Blödheit und mangelnde Tests kann keine Programmiersprache verhindern.
> Aber dass das für dich ein Zeichen mäßiger Sicherheit ist, sagt ja eh
> schon wieder alles über deine Kompetenz.
So gesehen ist natürlich alles sicher, wenn das übliche Prozedere 
irgendwie absolviert wurde und Fragen unerwünscht sind :->
Aber so weit kannst Du vor lauter Kompetenz gar nicht mehr denken! Dafür 
reicht es eben nicht, für Anglizismen, Nachhaltigkeit und Schlagwörter 
dafür reicht es.
Glaubst Du wirklich ein Milliardenprogramm läuft ohne Software-Tests ab?
"Die Sicherheit" von C++ wird in dem Link angezweifelt! Da wird 
tatsächlich behauptet, daß es mit einer anderen Programmiersprache gar 
nicht erst passiert wäre - soviel zur C++ Sicherheit!
Aber das sind natürlich so wie meine Wenigkeit alles nur inkompetente 
Idioten und wie IMMER hast nur DU recht, bist eben der Superguru!

> Wäre auch absurd, das anzunehmen.
LOL, aber bei CodeBlocks und dem dort eingebundenen C Compiler spielt 
das auf einmal doch wieder eine entscheidende Rolle? Der produziert auf 
einmal per Zufall fehlerhaften Code?
Fehlerhafter Code, Compilereinstellungen sind Schuld, welche genau 
spielt keine Rolle, macht nix, alles nur reiner Zufall, 'undefined' 
eben.
Das ist eine schöne Erklärung, wenn man nicht mehr weiter weiß.

> Richtig, deshalb gibts auch Tests, die kann keine Programmiersprache der
> Welt ersetzen, auch wenn du das zu glauben scheinst.
eigentlich noch schlimmmer !!! - dann hätten die Software-Tests beim 
Arianeprogramm genau diese Fehler zu Tage fördern müssen!
Natürlich alles Idioten die Programmierer und die Software-Tester 
ebenfalls ?!
So muß es wohl gewesen sein?
Nur Gurus wie Dir kann sowas natürlich nie passieren.
Nur gut, daß Sie beim Militär ADA verwenden, ansonsten gute Nacht!

> Juhu, schon wieder eine unbelegte Behauptung mehr. Poste doch mal ein
> Beispiel,...
mach das zur Abwechslung doch mal selber, Du bist doch der C++ Experte, 
ich nicht.
Außerdem liest Du meine Links nur oberflächlich; Egal was ich bringen 
würde, es wäre IMMER inkompetent, usw., Futter für den Oberguru, damit 
es dann Anglizismen hagelt? Nein, Danke!
Weiterhin komme ich gar nicht mehr nach auf Deine ganzen zum Teil 
falschen Darstellungen zu antworten! Es geht schon rein zeitlich nicht!
Auf den eigentlichen Sachverhalt gehst Du sowieso nicht ein bzw. mit 
"undefined" hat sich die Frage für Dich erledigt.

> Ich bin hier raus
ich auch - jemand, der mit Anglizismen nur so um sich wirft, alles auf 
'undefined behaviour',fehlerhaften Code und Zufälle aller Art 
zurückführt, den das Compilerverhalten einen Dreck interessiert, der den 
Ariane Absturz nur auf mangelnde Tests oder auch totale Doofheit der 
dortigen Programmierer und Software-Tester zurückführt, der den Visual 
C++ Compiler wesentlich schlechter als einen Freeware Compiler einstuft 
- was soll man da noch sagen ???
Du hast IMMER recht, könnten wir doch alle Deinen göttlichen Status 
erreichen! - jetzt zufrieden ?!
Aber es gibt auch Teilnehmer (nicht nur ich), die das anders sehen und 
der Sache gern auf den Grund gehen möchten; ob Dir das nun paßt oder 
nicht!
Dann mußt Du eben mal Beispiele und Argumente liefern, die das eindeutig 
belegen - was Du ja nicht machst.

Zum Abschluß noch ein kleines Schmankele zur Deiner Lieblingssprache 
JAVA, die ja so mies ist im Vergleich zu C++
https://www.heise.de/newsticker/meldung/SAP-setzt-auf-Java-51972.html
Na ja, SAP ist für Dich wahrscheinlich eine genauso inkompetente Firma 
wie die Programmiersprache Java selbst ?!
Echt traurig solche Leute wie Du.
Überall nur Inkompetenz & Idioten, mal Dir weiter Deine Welt!

Beitrag #5714679 wurde von einem Moderator gelöscht.
Beitrag #5714718 wurde von einem Moderator gelöscht.
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wieder so viele Personalpronomen...

Darüber hinaus gilt im gesamten Forum, also auch hier die simple Regel:
Nur 1 Nutzername pro Thread!
Siehe die Nutzungsbedingungen

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.