Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

1

25.04.2009, 20:32

Wieder Probleme mit Linux...

Hallo,
ich weiß, mich nervt es selbst, ständig wieder fragen zu müssen, weil etwas unter Linux nicht so funktioniert, wie ich es will -.-' Hoffe mal, ihr beantwortet mir trotzdem meine Frage:
Ich arbeite mit Code::Blocks, und der SFML, damit ich mit meinen Programmen nicht nur an Windows gebunden bin... Jetzt habe ich unter Ubuntu einfach mal Code::Blocks installiert, und mein Projekt, aus der Windows-version geladen. Alles schien zu funktionieren, allerdings lässt es sich nicht direkt kompilieren:

C-/C++-Quelltext

1
2
wchar_t buffer[100];
swprintf(buffer, L"HP: %i", m_player->get_health());

Hier bringt er mir jetzt:

Fehler: ungültige Umwandlung von »const wchar_t*« in »size_t«
Argument 2 von »int swprintf(wchar_t*, size_t, const wchar_t*, ...)« wird initialisiert
Fehler: ungültige Umwandlung von »int« in »const wchar_t*«
Fehler: Argument 3 von »int swprintf(wchar_t*, size_t, const wchar_t*, ...)« wird initialisiert

Wenn ich daraus das mache:

C-/C++-Quelltext

1
2
char buffer[100];
sprintf(buffer, "HP: %i", m_player->get_health());

Funktioniert es.... für diesen Fall brauche ich nicht unbedingt Unicode, würde es aber trotzdem gerne verwenden, auch für die Zukunft...
Weiß jemand, wie ich es mache, damit es auch mit Unicode funktioniert?
Habe testweise mal Unicode defined (unter Windows nicht gebraucht), aber da bekomme ich plötzlich nen Error in der SFML/Unicode.hpp und der c++/typeinfo o_O

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

25.04.2009, 21:20

Zitat von »"msdn"«


The ISO C Standard requires the following prototype for swprintf:
Copy Code

int swprintf (wchar_t *, size_t, const wchar_t *, ...);

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

3

25.04.2009, 21:32

OK, das hat mir jetzt tatsächlich weitergeholfen ^^
aber verstehen tu ich es nicht... wieso geht das unter windows, aber unter linux nicht?
und wieso erwartet swprintf diesen size_t parameter, sprintf aber nicht?

Anonymous

unregistriert

4

25.04.2009, 22:15

Tja, diese Frage wird beantwortet mit einem Blick in die Referenz ;)

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

5

26.04.2009, 00:23

Zitat von »"n0_0ne"«

aber verstehen tu ich es nicht... wieso geht das unter windows, aber unter linux nicht?

Weil der Compiler, den du unter Windows verwendest, gewisse Features hat, die nicht standard-komform sind?
Und weil MS sich generell, wie allseits und allgemein bekannt, nicht an Standards hält.
<< an dieser Stelle ist eine Signatur verstorben >>

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

6

26.04.2009, 01:41

Das wäre wieder ein schöner Anwendungsfall für stringstreams ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

26.04.2009, 08:37

Zitat von »"the[V«

oid"]
Und weil MS sich generell, wie allseits und allgemein bekannt, nicht an Standards hält.


Microsoft hält sich in diesem Fall aber ganz genau an den Standard... :roll:

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

8

26.04.2009, 09:13

@ K-Bal... es ist IMMER die selbe stelle :D
@Void... ich benutze unter windows und linux jeweils gcc, unterscheiden die sich wirklich je nach plattform?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

26.04.2009, 09:43

Überleg doch einfach mal, was gcc eigentlich "nur" ist.

Und gleich noch ein kleines Bild: "Ich fahre immer Autos mit einem 6 Zylinder Motor. Unterscheiden sich die Autos?"
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

10

26.04.2009, 11:40

gcc ist soweit ich weiß "nur" ein compiler... gerade deshalb frage ich mich ja auch, was das überhaupt damit zu tun haben soll, denn in meiner Gedankenwelt macht ein Compiler im Grunde nichts anderes, als einen gegebenen Code in assembler (bzw. den passenden bitstrom dazu..) zu übersetzen... und das sollte ja unter linux und windows ziemlich identisch ablaufen...
welche nicht-standardkonformen features hat denn jetzt der windows-gcc?

Werbeanzeige