Ich versuche, den folgenden Code im 32-Bit- und 64-Bit-Modus zu kompilieren. Aber das Ding hier ist, keine Probleme mit 32-Bit, gibt es Kompilierungsfehler in 64 Bit.Fehler: Umwandlung von int (*) (const char *, stat *) zu unsigned int verliert die Genauigkeit
Bitte geben Sie mir Ihren Vorschlag für die erfolgreiche Kompilierung im 64-Bit-Modus.
#include<stdarg.h>
#include<stdio.h>
#include "sys/stat.h"
int main(void)
{
int val;
val = int((unsigned(stat)>>8))&0xff;
printf("val = %d\n", val);
return 0;
}
[[email protected] ~]$ g++ -m64 bit_ops.cpp
bit_ops.cpp: In function âint main()â:
bit_ops.cpp:9: error: cast from âint (*)(const char*, stat*)throw()â to âunsigned intâ loses precision
[[email protected] ~]$
vielleicht lesen Sie die [Dokumentation für stat] (http://pubs.opengroup.org/onlinepubs/009695399/functions/stat.html). Und/oder beschreiben Sie, was Sie versuchen zu tun, weil der Code, den Sie gepostet haben, einen Fehler enthält, den der Compiler erfolgreich diagnostiziert hat. –