L'esecuzione del seguente example for _stat from MSDN compilato con Visual C++ 2015 Express utilizzando v140_xp
come Platform Toolset
(target Win32) viene eseguito normalmente su Windows 7 ma non su Windows XP su diversi computer da me testati.Visual C++ 2015 express: _stat non funziona su Windows XP
// crt_stat.c
// This program uses the _stat function to
// report information about the file named crt_stat.c.
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
int main()
{
struct _stat buf;
int result;
char timebuf[26];
char* filename = "crt_stat.c"; // Absolute paths like "D:\\crt_stat.c" produce the same behaviour.
errno_t err;
// Get data associated with "crt_stat.c":
result = _stat(filename, &buf);
// Check if statistics are valid:
if (result != 0)
{
perror("Problem getting information");
switch (errno)
{
case ENOENT:
printf("File %s not found.\n", filename);
break;
case EINVAL:
printf("Invalid parameter to _stat.\n");
break;
default:
/* Should never be reached. */
printf("Unexpected error in _stat.\n");
}
}
else
{
// Output some of the statistics:
printf("File size : %ld\n", buf.st_size);
printf("Drive : %c:\n", buf.st_dev + 'A');
err = ctime_s(timebuf, 26, &buf.st_mtime);
if (err)
{
printf("Invalid arguments to ctime_s.");
return 1;
}
printf("Time modified : %s", timebuf);
}
}
Windows 7 uscita:
uscitaFile size : 6
Drive : D:
Time modified : Tue Sep 8 10:06:57 2015
Windows XP:
Problem getting information: Invalid argument
Invalid parameter to _stat.
E sì crt_stat.c si trova nella directory di file eseguibile che è anche il CWD.
È un errore o mi manca qualcosa?
Puoi testare il vostro esempio con un percorso assoluto? –
Appena testato con il percorso assoluto "D: \\ crt_stat.c". I risultati sono gli stessi. Win7 va bene, WinXP no. –
MSDN: https://connect.microsoft.com/VisualStudio/feedback/details/1557168/wstat64-returns-1-on-xp-always - suona come un bug VS2015 – Petesh