2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 undeclare _int64 в gcc
Сообщение15.03.2020, 22:07 


07/10/15

2400
Доброго времени суток.
после многократных неудачных попыток, мне всё таки удалось запустить компилятор gcc4.9,
но тут возникла другая проблема, выяснилось, что в gcc нет такого типа как _int64, а в моей программе он используется очень широко.
Вопрос к знающим программистам, можно ли как то побыстрому решить эту проблему, не переписывая код?
В gcc как я понял есть тип int64_t, попробовал сделать так
Код:
typedef signed _int64 int64_t;

но так почему то не работает (error unexpected)

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 22:14 
Заслуженный участник
Аватара пользователя


16/07/14
9216
Цюрих
Вы синтаксис typedef посмотрите, у вас что-то очень странное написано (и зачем там вообще signed?). ИМХО проще использовать using там, где он допустим.

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 22:28 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Используется синтаксис C++
typedef signed int64_t _int64;

Ошибки как у пятиклассника. Даже правильно привести название ошибки не можете.

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 22:44 


07/10/15

2400
Munin в сообщении #1445026 писал(а):
Ошибки как у пятиклассника

этот вариант может и правильнее, но тоже не работает, та же ошибка

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 23:04 
Заслуженный участник
Аватара пользователя


16/07/14
9216
Цюрих
А что вообще за зверь signed int64_t?

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 23:09 


07/10/15

2400
mihaild в сообщении #1445037 писал(а):
А что вообще за зверь signed int64_t

это я в инете нашел, сам не знаю, но надо же с чего то начинать

просто я в gcc не очень, не знаю какие там типы сейчас в моде

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 23:38 
Заслуженный участник
Аватара пользователя


16/07/14
9216
Цюрих
gcc тут не при чем, тут стандарт C++ важен. Что такое typedef, что такое int64_t и т.д.
Вот _int64 - это изобретение MS, про него надо знать только что пользоваться им не нужно.
(я бы вообще советовал просто в тексте программы везде заменить тип на правильный)

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 23:51 


07/10/15

2400
mihaild в сообщении #1445045 писал(а):
я бы вообще советовал просто в тексте программы везде заменить тип на правильный

спасибо конечно за совет, да я и знаю что _int64 работает только в mcvs, но дело в том, что он у меня повсюду, и всё переправлять - это проблема. Тема поста собственно об этом, иначе я бы её не заводил.
Неужели нельзя ничего сделать?
Может хотя бы через макро вставку попробовать?
Код:
#define _int64 signed long long int

или так неправильно?

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:03 
Заслуженный участник


20/08/14
11867
Россия, Москва
Используется синтаксис C++
typedef  int64_t  _int64;
Прекрасно работает. И это самый правильный вариант видимо.
Раз уж намёков не понимаете.

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:13 
Заслуженный участник
Аватара пользователя


16/07/14
9216
Цюрих
Andrey_Kireew в сообщении #1445050 писал(а):
но дело в том, что он у меня повсюду, и всё переправлять - это проблема
Очень советую найти какой-нибудь способ заменять один идентификатор на другой сразу во всём проекте. Под линуксом - это sed -i 's/\<__int64\>/int64_t/g' на всех файлах (для чего есть find -exec).

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:23 


07/10/15

2400
Большое спасибо Dmitriy40!
компилировалось (правда пришлось добавить #include <stdint.h>, но это мелочи)

хорошо бы ещё сделать, чтобы в зависимости от компилятора автоматически переключалось, правда пока не знаю как


В общем новый код стал работать сразу на 20% быстрее, чем с msvc, даже при установках по умолчанию, попробую ещё подключить AVX2

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:25 
Заслуженный участник
Аватара пользователя


16/07/14
9216
Цюрих
Andrey_Kireew в сообщении #1445053 писал(а):
чтобы в зависимости от компилятора автоматически переключалось, правда пока не знаю как
Это только через ifdef. Но ИМХО лучше перестать гальванизировать компиляторы, не поддерживающие C++11.

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:30 


07/10/15

2400
mihaild в сообщении #1445054 писал(а):
не поддерживающие C++11

gcc4.9 поддерживает С++11

mihaild в сообщении #1445054 писал(а):
Это только через ifdef

Спасибо! сейчас попробую разобраться

-- 16.03.2020, 01:34 --

(Оффтоп)

К стати, сообщите пожалуйста mihaild, что значит "гальванизировать", толи я сегодня правда туплю, но никак не могу осознать смысла этого выражения. Если не сложно, пожалуйста проясните этот момент, а то что то покоя не даёт

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:40 
Заслуженный участник


20/08/14
11867
Россия, Москва
Andrey_Kireew в сообщении #1445053 писал(а):
хорошо бы ещё сделать, чтобы в зависимости от компилятора автоматически переключалось, правда пока не знаю как
Примерно так:
Используется синтаксис C++
#ifndef  _MSC_VER
typedef  int64_t  _int64;
#endif

 Профиль  
                  
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:51 


07/10/15

2400
Dmitriy40 в сообщении #1445057 писал(а):
Примерно так

спасибо! стало просто замечательно, опробовал на обоих компиляторах - всё работает отлично

кстати, как Вы думаете, не лучше ли засунуть под #ifndef _MSC_VER и #include <stdint.h>, или так нельзя?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group