Модератор: Модераторы разделов
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 15.01.2008 10:38
Вот непонятно:
Код: Выделить всё
#define _LARGE_FILES
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(off_t));
return 0;
}
результат 4, а я хочу 8
Что я сделал не так?
Код: Выделить всё
[drb@lism ~]$ g++ --version
g++ (GCC) 4.1.2 20070302 (prerelease) (4.1.2-1mdv2007.1)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
_beast
Сообщения: 77
ОС: linux 2.6
Сообщение
_beast » 15.01.2008 13:41
Код:
#include <unistd.h>
#define __USE_FILE_OFFSET64
#include <stdio.h>
#include <stdlib.h>
main()
{
printf("%d\n",sizeof(off_t));
}
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 15.01.2008 13:47
_beast писал(а): ↑ 15.01.2008 13:41
/codebox
Код: Выделить всё
#include <unistd.h>
#define __USE_FILE_OFFSET64
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(off_t));
return 0;
}
всё равно четыре
_beast
Сообщения: 77
ОС: linux 2.6
Сообщение
_beast » 15.01.2008 13:50
localhost% ./sizeoff_t
8
localhost% gcc --version
gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
у меня 8
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 15.01.2008 14:00
_beast , вот стал бы я тему создавать... В том то и дело, что при конфликте библиотек(или я уж незнаю чего) система откатывается на "безопасный" вариант. Мне надо что-бы у меня(как минимум) открывались большие файлы, и (как максимум) где угодно.
PS: А где вы взяли __USE_FILE_OFFSET64? Это ли не грязный хак, зависящий от дистрибутива?
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian
Сообщение
rm_ » 15.01.2008 14:13
У меня оба варианта выдают 4 в 32-битной ОС, и 8 в 64-битной.
Причём в 64-битной выдаётся 8 даже если убрать #define'ы (что неудивительно, наверное).
Обе системы - свежий Debian Testing.
Debris
Сообщения: 282
ОС: Debian GNU/Linux Lenny
Сообщение
Debris » 15.01.2008 14:25
Зависит от компилятора?
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 15.01.2008 14:40
да мне всё равно - что от чего зависит! Мне надо файлы больше 2Г открывать, и работать с ними. Почему winNT4.0 это умела, а Linux2008 нет? И причём тут 64х битные CPU?!
_beast
Сообщения: 77
ОС: linux 2.6
Сообщение
_beast » 15.01.2008 14:40
/usr/include/sys/types.h
#ifndef __USE_FILE_OFFSET64
typedef __off_t off_t;
#else
typedef _off64_t off_t;
#endif
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 15.01.2008 14:48
_beast писал(а): ↑ 15.01.2008 14:40
/usr/include/sys/types.h
ну и что? Я это читал. Ну всё одно - 4
Вы мне найдите, где изменяется __USE_FILE_OFFSET64
_beast
Сообщения: 77
ОС: linux 2.6
Сообщение
_beast » 15.01.2008 14:49
вообще при записи/чтении используеться loff_t (usr/include/linux/fs.h) а он именно и равен 8,
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo
Сообщение
/dev/random » 15.01.2008 14:49
Код: Выделить всё
#define _GNU_SOURCE 1
#define _FILE_OFFSET_BITS 64
#include <features.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(off_t));
return 0;
}
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 15.01.2008 15:11
/dev/random писал(а): ↑ 15.01.2008 14:49
#define _GNU_SOURCE 1
#define _FILE_OFFSET_BITS 64
#include <features.h>
чтож. Спасибо. Работает. А где об это сакральном знании почитать можно?
Red User
Сообщения: 229
ОС: Debian
Сообщение
Red User » 19.01.2008 01:46
drBatty
Про _FILE_OFFSET_BITS в man fseeko написано
А ведь когда-то не боялись мы программы любой,
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 19.01.2008 11:11
Red User писал(а): ↑ 19.01.2008 01:46
Про _FILE_OFFSET_BITS в man fseeko написано
Ага, целых 2 строчки.
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo
Сообщение
/dev/random » 19.01.2008 15:07
drBatty писал(а): ↑ 15.01.2008 15:11
чтож. Спасибо. Работает. А где об это сакральном знании почитать можно?
Сорри, не сразу заметил вопрос.