Проблема состоит в том, что для файлов по размеру больше 2 гб функция stat() выдает всякую ерунду вплане размера файла. Проблема эта проявляется не везде. Например на 64 битной системе все работает корректно, а на другой, которая является 32 битной возникает эта проблема. Как я понял возвращаемый фуекцией размер имеет тип long, и судя по всему диапазон типа long для 64 битной и 32 битной систем различаются, поэтому в последней из них происходит переполнение.
Искал решение, нашел функцию stat64(), которая вроде как возвращает размер типа long long, но простейший пример с ее использованием отказывается компилиться
Система: Linux
Язык: C
Компилятор: gcc
Проблема состоит в том, что для файлов по размеру больше 2 гб функция stat() выдает всякую ерунду вплане размера файла. Проблема эта проявляется не везде. Например на 64 битной системе все работает корректно, а на другой, которая является 32 битной возникает эта проблема. Как я понял возвращаемый фуекцией размер имеет тип long, и судя по всему диапазон типа long для 64 битной и 32 битной систем различаются, поэтому в последней из них происходит переполнение.
Искал решение, нашел функцию stat64(), которая вроде как возвращает размер типа long long, но простейший пример с ее использованием отказывается компилиться
#include <sys/stat.h> #include<stdio.h> long long GetFileSize(char filename[]) { struct stat64 info; stat64(filename, &info); return info.st_size; } main() { printf("%lld", GetFileSize("sta")); }Такая ошибка:
Что посоветуете?