VS2005 Alignment von 64bit auf 32bit umstellen
-
Hallo,
weiss jemand wie das standardmässig auf 64-bit eingestellte Alignment für long und pointer im VS2005 auf 32-bit umgestellt werden kann.
Ist dies eine Projekteigenschaft in der C/c++-Kategorie?Vielen Dank für Eure Infos im Voraus!
MfG
kpehrs
-
Das Alignment eines Objekts kann nie (schon gar nicht standardmäßig) größer als dessen Größe sein. Da long unabhängig vom Zielsystem mit Visual C++ stets 32 bit hat, muss hier ein Irrtum vorliegen.
-
irgendwo in VS2005 soll es eine Einstellung geben um die standardmässig eingestellten 64-bit auf 32-bit umzustellen (pointer-type, long, etc.). pointer-type, long, etc. sollen im VS2005 standardmässig auf 64-bit eingestellt sein!
Problem ist das bei Prg-Start im Debug-Modus im Quellcode mehr ausgenullt wird als vorgesehen! Sprich es werden Übergabeparameter die z.B. den Wert 5 haben nach initialisierung einer anderen Variablen einfach ausgenullt!
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Project|Properties|Configuration Properties|C/C++|Code Generation|Struct Member Alignment: /Zp4
-
Der Schalter steht bereits auf /Zp4.
Welche Ursache kann es noch dafür geben, dass ein Übergabeparameter einer Funktion (z. B. int keylen mit einem Wert von 5) mit Null überschrieben wird, wenn in der gleichen Funktion kurze Zeit später eine Variable initialisiert wird, wie z.B.:
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX_init(&ctx); // hier nach ist keylen = 0 statt 5Gruss
-
kpehrs schrieb:
Der Schalter steht bereits auf /Zp4.
Welche Ursache kann es noch dafür geben, dass ein Übergabeparameter einer Funktion (z. B. int keylen mit einem Wert von 5) mit Null überschrieben wird, wenn in der gleichen Funktion kurze Zeit später eine Variable initialisiert wird, wie z.B.:
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX_init(&ctx); // hier nach ist keylen = 0 statt 5Gruss
Wenn du nicht weißt, was oder warum etwas passiert, dränge uns bitte nicht deine Vermutungen als Fakten auf (etwa, dass ein Problem mit dem Alignment besteht). Das gilt sinngemäß auch für Hörensagen der Art
pointer-type, long, etc. sollen im VS2005 standardmässig auf 64-bit eingestellt sein!
was falsch oder ungenau ist. So etwas nervt, weil es überflüssigerweise erfordert, zusätzlich zur Erforschung der Wahrheit noch fehlerhafte Ansichten widerlegen zu müssen.
Weder der gezeigte Code noch die Beschreibung dazu sind geeignet, das Verhalten nachzuvollziehen.
-
Vermutlich ein Fehler in "EVP_CIPHER_CTX_init"!?
Ist dies eine direkte Funktion oder in einer LIB drin?
Dann ist das ALignment dort vermutlich eher *höher* als niedriger!
-
Fehler gefunden! Es lag an der OpenSSL-Library. Deren-Version war scheinbar zu alt. Mit der neusten Vers. scheint es zu funktionieren!