LINUX.ORG.RU

INT 64 в GCC


0

0

Как в GNU C++ (gcc) объявить целое число размером 64 бита. Я портирую свою программу на Линукс и мне наддо считать размер выбранных файлов, а он можнет быть больше 4G

Игорь

anonymous

Загляни в /usr/include/stdint.h

Havoc ★★★★
()

> Как в GNU C++ (gcc) объявить целое число размером 64 бита.
Никак!

На 32-битной системе таких чисел быть не может.
На 64-битных системах такие опции есть, но у каждой свои и ...
не работают.

E.g.(gcc v2.95.2):
man gcc
...
MIPS Options
...
-mint64 -mlong64
...
-mint64
-mlong64
-mlonglong128
These options don't work at present.
...

Может помочь включение файлика такого содержания

#define int long
в каждый файл ПОСЛЕ стандартных заголовков, но это -- не надежно
(на первом же scanfе грохнешься) и не поможет на 32bit процессорах.

anonymous
()

2 anonymous: скорее всего имелось не сделать так, чтобы размер int был 64 бита, а просто работать с целыми 64-х битными числами.
Например в VC и BCB есть __int64
Можно long long использовать.
Ты загляни в тот хедер, который я указал.
На XT же как-то работали с числами > 16 бит.

Havoc ★★★★
()

long long не помогает?

anonymous
()
Ответ на: комментарий от Havoc


> скорее всего имелось не сделать так, чтобы размер int был 64 бита, а просто работать с целыми
> 64-х битными числами.
А я так понял вопрос именно как одним мановением портануть программу
на 64 бита.

> На XT же как-то работали с числами > 16 бит.
Ну, типа, gcc тоже long long поддерживает, но так-- низЭнько..
Т.е. глюки могут быть, связанные с библиотеками, хотя вот что у меня получилось:
#include <stdio.h>
int main (void){
printf("sizeof(int)=%d, sizeof(long)=%d, sizeof(long long)=%d\n",
sizeof(int),sizeof(long),sizeof(long long));
return(0);
}

i386, Линукс, gcc 2.95.2, результат:

sizeof(int)=4, sizeof(long)=4, sizeof(long long)=8

anonymous
()

> sizeof(int)=4, sizeof(long)=4, sizeof(long long)=8

А ты ожидал чего-то другого? :)

Havoc ★★★★
()

СПАСИБО!!!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.