`mbstowcs()` Windows vs. Linux
-
Kannst es ja mal mit dem DependencyWalker für die kompilierte Datei überprüfen.
Ansonsten habe ich für LLVM/Clang/LLD (anstatt gcc) unter github.com/mstorsjo/llvm-mingw UCRT-Support gefunden, d.h. Download der neuesten Version unter Releases.
-
@Th69 sagte in `mbstowcs()` Windows vs. Linux:
Kannst es ja mal mit dem DependencyWalker für die kompilierte Datei überprüfen.
Danke
Cooles Programm. Ich musste noch dieMFC42.dll
runterladen.Gibt es so etwas auch für Linux ?
-
Such doch einfach mal nach "Linux Dependency Walker"...
-
@Mathuas ldd
-
@Tyrdal
DankeIch habe gerade noch etwas genialeres entdeckt. Dies kommt fast an das von "Linux Dependency Walker" ran.
https://github.com/haampie/libtree
Es ist sogar bei Ubuntu dabei.
sudo apt install libtree
-
@Mathuas sagte in `mbstowcs()` Windows vs. Linux:
sudo apt install libtree
Danke auch für den Tip. Die Darstellung ist echt deutlich angenehmer zu lesen. Bei Debian ist es übrigens auch dabei.
-
@Finnegan sagte in `mbstowcs()` Windows vs. Linux:
Danke auch für den Tip. Die Darstellung ist echt deutlich angenehmer zu lesen. Bei Debian ist es übrigens auch dabei.
Mit diesen Parametern ist es recht ausführlich:
libtree /bin/ls -vvv -p
Einzig was mich stört. Die lila-Schrift ist kaum zu lesen.
-
@firefly sagte in `mbstowcs()` Windows vs. Linux:
@Th69 sagte in `mbstowcs()` Windows vs. Linux:
Versuche es mal beim Aufruf anzugeben, s. Changing the Locale in WINE, anstatt mittels
setlocale
im Code:
LANG="de_CH.UTF8" wine main.exe
bzw.
LC_ALL="de_CH.UTF8" wine main.exe
(hier benutzt du die Linux-Nomenklatur, anstatt im Code die Windows-Runtime Nomenklatur)Nützt ihm aber nicht viel wenn er sein Programm unter einem richtigen windows laufen lassen möchte.
Ich habe male ein wenig
LANG=
rumgespielt. Spannend was da rauskommt.#include <stdio.h> #include <locale.h> #include <time.h> int main(void) { time_t currtime; struct tm *timer; char buffer[80]; time( &currtime ); timer = localtime( &currtime ); printf("\nsetlocale: %s\n", setlocale(LC_ALL, "")); strftime(buffer,80,"%c", timer ); printf("Float: %f Date: %s\n\n", 123.456, buffer) ; return 0; }
Copilierscript:
echo echo ======== Linux ======== echo rm main gcc -o main main.c LANG="de_CH.UTF8" ./main LANG="de_DE.UTF8" ./main LANG="en_US.UTF8" ./main LANG="en_GB.UTF8" ./main echo echo ======== Windows ======== echo rm main.exe x86_64-w64-mingw32-gcc main.c -o main.exe LANG="de_CH.UTF8" wine main.exe LANG="de_DE.UTF8" wine main.exe LANG="en_US.UTF8" wine main.exe LANG="en_GB.UTF8" wine main.exe
Ausgabe:
======== Linux ======== setlocale: de_CH.UTF8 Float: 123.456000 Date: Mo 03 Jun 2024 17:31:02 setlocale: de_DE.UTF8 Float: 123,456000 Date: Mo 03 Jun 2024 17:31:02 CEST setlocale: en_US.UTF8 Float: 123.456000 Date: Mon 03 Jun 2024 05:31:02 PM CEST setlocale: en_GB.UTF8 Float: 123.456000 Date: Mon 03 Jun 2024 17:31:02 CEST ======== Windows ======== setlocale: German_Switzerland.1252 Float: 123.456000 Date: 3.6.2024 17:31:03 setlocale: German_Germany.1252 Float: 123,456000 Date: 3.6.2024 17:31:03 setlocale: English_United States.1252 Float: 123.456000 Date: 6/3/2024 5:31:03 PM setlocale: English_United Kingdom.1252 Float: 123.456000 Date: 03/06/2024 17:31:03
Es wird alles berücksichtigt, inklusive das unsympathische Komma beim Float für die Deutschen.
Was noch interessant ist, wieso kommt das Datum bei wine anders raus als unter Linux ?
-
@Mathuas sagte in `mbstowcs()` Windows vs. Linux:
Es wird alles berücksichtigt, inklusive das unsympathische Komma beim Float für die Deutschen.
Ist zwar OT, aber da ist schon was dran. Ich find den Punkt vor allem bei Auflistungen praktischer: "Die Werte sind 8.5, 3.4, 7.6 und 1.9".
-
@Finnegan sagte in `mbstowcs()` Windows vs. Linux:
Ist zwar OT, aber da ist schon was dran. Ich find den Punkt vor allem bei Auflistungen praktischer: "Die Werte sind 8.5, 3.4, 7.6 und 1.9".
Ich auch, ich weis nicht, wieso ihr Deutschen mir dem Komma rumschlägt ?
Dies kommt wohl aus der Office-Welt.
Das schlimmste ist sowas:
Schweiz: 1'000.00 €
Deutschland: 1.000,00 €Wen man da falsch liest, werden aus 1000€ auf einmal 100000€.
Und genau die Office-Welt hat diesen Mist eingeführt, die viel mit Geld rechnen.
-
@Mathuas sagte in `mbstowcs()` Windows vs. Linux:
Dies kommt wohl aus der Office-Welt.
Ne, mit Office hat das nichts zu tun, das ist historische Entwicklung aus einer Zeit lange bevor es Computer gab
Ich würde sogar behaupten, dass das Komma als Dezimaltrennzeichen weiter verbreitet ist. Der Dezimalpunkt kommt halt im Englischen vor, daher ist er in wissenschaftlicher Literatur weiter verbreitet.
Die Schweiz ist da ein (komischer) Sonderfall.
-
@Schlangenmensch sagte in `mbstowcs()` Windows vs. Linux:
Die Schweiz ist da ein (komischer) Sonderfall.
Ob dies wirklich so ist ?
Ich kenne keine gewöhnlichen Taschenrechner, der ein Komma hat. Auch CNC-Maschinen, alles hat einen Punkt.
Und natürlich auch der C-Compiler. Generell, alles was eine 7-Segment-Anzeige hat.
-
@Mathuas Da hilft ein bisschen Recherche (https://de.wikipedia.org/wiki/Dezimaltrennzeichen#Schweiz)
-
@Mathuas sagte in `mbstowcs()` Windows vs. Linux:
Ich kenne keine gewöhnlichen Taschenrechner, der ein Komma hat.
Das liegt alles an der Dominanz des US-Englischen. Da die ersten Taschenrechner aus den USA kamen, haben die natürlich eine Punkt-Taste und keine Komma-Taste. Nimmst Du aber eine Computertastatur, dann ist die je nach Land entsprechend auf dem Zehnerblock beschriftet.
-
@john-0 Mein Casio Taschenrechner hat auch ein Komma. Ich dachte, das sich @Mathuas explizit auf die Schweiz bezieht.