Planet 3DNow! Forum    
  Fantastic Zero Logo


Zurück   Planet 3DNow! Forum > Software und Treiber > Programmierung
Hilfe Registrieren Blogs Mainboarddatenbank Galerie Extras Suchen Heutige Beiträge Alle Foren als gelesen markieren

Gehe zu
Antwort
 
Themen-Optionen Ansicht
Alt 08.08.2012, 18:26   Posting #1 (im Thread / einzeln)
Nightshift
Grand Admiral
Special
Grand Admiral
 
Benutzerbild von Nightshift
 
Registriert seit: 19.08.2002
Beiträge: 2.990
VS 2010 Problem mit 64-Bit-Integer [gelöst]

Hallo zusammen!

Und wieder einmal habe ich ein VS 2010 spezifisches Problem. Ich glaube langsam, dass das eine dysfunktionale Beziehung ist.

Das Problem hängt mit dem Umgang von VS 2010 mit 64-Bit-Integern zusammen.
Da gibt es ja die Visual Studio eigene __int64-Spezifikation bzw. auch long long.
Nun habe ich so eine Variable deklariert und siehe da - ich kann in ihr dennoch nur einen Wert eines 32-Bit-Integers speichern. Bei größeren Werten kommt es zum Pufferüberlauf.

Sprich, bei folgendem Code
Code:
__int64 x = 2147483648;
fprintf(pfiAusgabeZeiger, "mult = %li\n", x);
kommt daher als Ausgabe "x = -2147483648"

Eigentlich sollte __int64 immer eine Größe von 64 Bit ausweisen, unabhängig ob für 32 Bit oder 64 Bit kompiliert wird.
Bei mir ist es genau anders herum: Egal ob ich 32 Bit oder 64 Bit in den Projekteinstellungen auswähle, der Integer bleibt 32 Bit groß.
Und nein, um 64 Bit große Integer komme ich leider nicht herum, die brauche ich.

Es handelt sich um ein Projekt, das als Win32-Konsolen-Projekt erstellt wurde.


Die Frage ist: Was kann ich da tun? Liege ich vielleicht doch nur wieder in Konflikt mit irgendwelchen Projekteinstellungen?
In erster Linie hab ich da die "/D WIN32" Option im Auge. Ohne die bekomme ich aber erstmal neue Probleme.

Die Befehlszeile lautet:
Code:
/Zi /nologo /W3 /WX- /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Gm /EHsc /RTC1 /MTd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"x64\Debug\fft_test.pch" /Fa"x64\Debug\" /Fo"x64\Debug\" /Fd"x64\Debug\vc100.pdb" /Gd /TP /errorReport:queue
 
Alt 09.08.2012, 00:04   Posting #2 (im Thread / einzeln)
TiKu
Administration
 
Benutzerbild von TiKu
 
Registriert seit: 16.11.2001
Ort: Unterföhring
Beiträge: 12.550
Häng mal ein i64 dran:
Code:
__int64 x = 2147483648i64;
 
Alt 09.08.2012, 11:05   Posting #3 (im Thread / einzeln)
BoMbY
Admiral
Special
Admiral
 
Benutzerbild von BoMbY
 
Registriert seit: 22.11.2001
Ort: Aachen
Beiträge: 1.474
Vielleicht ist auch das Problem das "%li" im fprintf? Das müsste vermutlich "%I64i" sein?

http://msdn.microsoft.com/en-us/library/56e442dc.aspx
 
  Antwort
 

Themen-Optionen
Ansicht

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:06 Uhr.



Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2013, vBulletin Solutions, Inc.
Inhalte und Bilder - Copyright ©1999 - 2013 - Planet 3DNow!