PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Projektnamen in C++


Geldmann3
2013-03-22, 00:54:27
In der Berufsschule wurde uns mal gesagt, der Projektname solle keine Leerzeichen oder andere Sonderzeichen enthalten. Jedoch kann ich in aktuellen Entwicklungsumgebungen keinen Grund dafür finden, Ok, doch, es gibt Probleme....
"Superprojekt" & ÄÖÜ etc.
.... ergibt eine Fehlermeldung.
Jemand Erfahrungen damit? Nur aus Interesse...

Aber warum keine Leerzeichen? Die gehen doch....

Gast
2013-03-22, 01:12:07
C++ hat keine Projekte. Höchstens deine IDE, die du nicht genannt hast.

Marscel
2013-03-22, 02:03:53
Haben die euch auch beigebracht, Datenmüll vorm Wegwerfen zu trennen?

Das kritische ist dabei meist irgendein Encoding-Kram oder ungünstige Pfade in den Buildfiles bzw. Parametern. Und natürlich auch, was zulässige Bezeichner im Code angeht.

Gast
2013-03-22, 10:21:37
Haben die euch auch beigebracht, Datenmüll vorm Wegwerfen zu trennen?

Das kritische ist dabei meist irgendein Encoding-Kram oder ungünstige Pfade in den Buildfiles bzw. Parametern. Und natürlich auch, was zulässige Bezeichner im Code angeht.
Jep, hier ist ja oftmals nur schon Windows mit dem unsinnigen "C:\Program Files" (arrrg, wieso nicht einfach C:\Programs?) mühsam. Deswegen würde ich nach Möglichkeit immer auf Leerzeichen verzichten.

Ganon
2013-03-22, 14:35:19
Da UTF8 leider in vielen Bereichen noch immer kein Standard ist (bei Ruby z.B. erst seit der neusten 2.0 von vor ein paar Wochen), würde ich auf alles verzichten was Sonderzeichen hat. Dabei aber bei eigenem Code auf UTF8 achten.

Ectoplasma
2013-03-22, 20:17:13
Da UTF8 leider in vielen Bereichen noch immer kein Standard ist (bei Ruby z.B. erst seit der neusten 2.0 von vor ein paar Wochen), würde ich auf alles verzichten was Sonderzeichen hat. Dabei aber bei eigenem Code auf UTF8 achten.

Nicht mal die neuesten Windows-Versionen haben vernünftigen UTF8 Support. Die Pfeifen von MS bekommen das einfach nicht hin oder wollen es nicht hinbekommen.

Geldmann3
2013-03-23, 00:46:11
Sollte man in Visual Studio 2012 also beispielsweise besser auf Leerzeichen im Projektnamen verzichten?

Was könnten denn für Probleme entstehen?

Marscel
2013-03-23, 02:50:50
Was könnten denn für Probleme entstehen?

Wie wäre es mit ausprobieren? Ich bin mir recht sicher, dass VS die Inputs in den Wizards whitelisted.

Geldmann3
2013-03-23, 11:40:21
Da passiert nichts. Nur andere Sonderzeichen und reservierte Namen werden nicht zugelassen.

Dann ist die Aussage, man solle keine Leerzeichen verwenden also Mumpitz.:tongue:

PatkIllA
2013-03-24, 06:40:17
Dann ist die Aussage, man solle keine Leerzeichen verwenden also Mumpitz.:tongue:kommt immer wieder for, das man in Skripten darüber stolpert.

Thunderhit
2013-03-24, 10:55:06
Nicht mal die neuesten Windows-Versionen haben vernünftigen UTF8 Support. Die Pfeifen von MS bekommen das einfach nicht hin oder wollen es nicht hinbekommen.

Wo denn nicht? Der Explorer zumindest funktioniert wunderbar mit japanischen etc. Zeichen.

Ectoplasma
2013-03-25, 00:47:42
Wo denn nicht? Der Explorer zumindest funktioniert wunderbar mit japanischen etc. Zeichen.

Das worüber du redest ist UNICODE 16 oder MS UNICODE. UNICODE != UTF8. Intern kann Windows gar kein UTF8. Es gibt lediglich eine Konvertierungsfunktion. Die Konsole kann noch nicht einmal UNICODE. UNICODE und UTF8 sind zwar von den Zeichensätzen größtenteils Binärkompatibel, die Speicherung ist aber eine ganz andere. Während du jedes alte C/C++ Programm auch mit UTF8 verwenden könntest (bis auf bestimmte Ausnahmen), so mußt du für UNICODE erst umständliche Makros verwenden, bzw. alle Textfunktionen explizit von 8 Bit auf 16 Bit umstellen.

Sorry, aber Windows ist in dieser Beziehung echter Schmerz.

Coda
2013-03-25, 02:00:34
Nicht mal die neuesten Windows-Versionen haben vernünftigen UTF8 Support. Die Pfeifen von MS bekommen das einfach nicht hin oder wollen es nicht hinbekommen.
Es ist halt UTF-16. Das ist auf Gründen der bestehenden APIs auch kaum zu ändern.

Das worüber du redest ist UNICODE 16 oder MS UNICODE. UNICODE != UTF8. Intern kann Windows gar kein UTF8. Es gibt lediglich eine Konvertierungsfunktion. Die Konsole kann noch nicht einmal UNICODE. UNICODE und UTF8 sind zwar von den Zeichensätzen größtenteils Binärkompatibel, die Speicherung ist aber eine ganz andere. Während du jedes alte C/C++ Programm auch mit UTF8 verwenden könntest (bis auf bestimmte Ausnahmen), so mußt du für UNICODE erst umständliche Makros verwenden, bzw. alle Textfunktionen explizit von 8 Bit auf 16 Bit umstellen.

Sorry, aber Windows ist in dieser Beziehung echter Schmerz.
Dein Post ist aber auch echter Schmerz. Unicode ist ein Zeichensatz, UTF-8 und UTF-16 nur verschiedene Enkodierungen für die Unicode Code Points.

Ich wäre aber auch dafür, dass man soweit es geht überall UTF-8 verwenden. Vor allem muss endlich mal dieser ganze ASCII, Latin-1 etc. Schrott ausgerottet werden.

Außerdem C++ und Unicode: https://fgiesen.wordpress.com/2013/01/30/a-string-processing-rant/ :facepalm:

Ectoplasma
2013-03-25, 09:30:47
Dein Post ist aber auch echter Schmerz.

Wenn du richtig lesen könntest, hättest du weniger Schmerzen.

Ectoplasma
2013-03-25, 09:50:57
Es ist halt UTF-16. Das ist auf Gründen der bestehenden APIs auch kaum zu ändern.

Ich habe mich ein wenig unglücklich ausgedrückt, stimmt schon. Aber das Windows UTF-16 Kodierung können soll, wäre mir neu. Windows kann nur ein altes festes 16-Bit Format, UTF-16 aber ist variabel und hat Wortlängen von 2 und 4 Byte. Ich wäre wirklich erstaunt, wenn das ginge bei Windows. Insofern würde auch nichts dagegen sprechen, wenn Windows auch UTF8 könnte.

Und weil ich das alles in meinem obigen Post nicht auseinanderdröseln wollte, kommt dieser ein wenig missverständlich rüber.

Coda
2013-03-25, 10:52:54
Die API kann UTF-16 seit Windows 2000. NT hat noch nur UCS-2 unterstützt.

Das Problem ist eher die Software. Ich denke der Großteil geht einfach von UCS-2 aus, obwohl Surrogate Pairs sehr wohl unterstützt werden müssten.

Ganon
2013-03-25, 11:05:19
Das Problem sind auch mehr die (Entwicklungs-)Anwendungen, die einfach nicht auf UTF-8 umgestellt sind. Z.B. Java arbeitet zwar intern mit UTF-16, aber benutzt bei Windows noch die alten Encodings (CP1252, glaube ich) und bei OS X auch noch MacRoman. Entsprechend nutzen das alle Anwendungen, wenn der Entwickler nicht aufpasst.

Und Java ist da nur ein Beispiel.

Ectoplasma
2013-03-25, 11:55:25
Die API kann UTF-16 seit Windows 2000. NT hat noch nur UCS-2 unterstützt.

Aha, wusste ich gar nicht. Schade, dass sie da nicht auch gleich UTF-8 unterstützen. Aber stimmt schon, das Problem wird wohl eher alte Software sein, die auf dieses Problem nicht eingeht.

Coda
2013-03-25, 12:50:16
Es gibt WideCharToMultiByte und MultiByteToWideChar um zwischen UTF-16 und UTF-8 zu konvertieren. Somit "unterstützt" Windows schon UTF-8.

Aber am besten nimmt man einfach gleich ICU für strings und konvertiert nur bei API-Calls ganz am Ende.

Ich finde es viel problematischer, dass C++ nicht native UTF-8-Unterstützung bekommen hat mit C++11.

Gast
2013-03-31, 06:26:36
Anstatt Leerzeichen kann man die Frage pragmatisch lösen, in dem man etwaige Leerzeichen im Projektnamen durch einen Unterstich ersetzt, also anstattt:

"Mein Projekt"

"Mein_Projekt"

Ich mache da grundsätzlich so und dann gibt's auch keine Probleme mit Scripten, Buildtools und sonstigem Kram.

Der Unterstrich wird immer verstanden, die einzige Software Plattform der ich begegnet bin, wo der Unterstrich nicht erlaubt ist, ist die Nicknamen Registrierung bei den Google.

Keine Ahnung, warum Google den Unterstrich nicht zuläßt.