2014 dxdy logo

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

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




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

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

 
 
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 22:14 
Аватара пользователя
Вы синтаксис typedef посмотрите, у вас что-то очень странное написано (и зачем там вообще signed?). ИМХО проще использовать using там, где он допустим.

 
 
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 22:28 
Аватара пользователя
Используется синтаксис C++
typedef signed int64_t _int64;

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

 
 
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 22:44 
Munin в сообщении #1445026 писал(а):
Ошибки как у пятиклассника

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

 
 
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 23:04 
Аватара пользователя
А что вообще за зверь signed int64_t?

 
 
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 23:09 
mihaild в сообщении #1445037 писал(а):
А что вообще за зверь signed int64_t

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

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

 
 
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 23:38 
Аватара пользователя
gcc тут не при чем, тут стандарт C++ важен. Что такое typedef, что такое int64_t и т.д.
Вот _int64 - это изобретение MS, про него надо знать только что пользоваться им не нужно.
(я бы вообще советовал просто в тексте программы везде заменить тип на правильный)

 
 
 
 Re: undeclare _int64 в gcc
Сообщение15.03.2020, 23:51 
mihaild в сообщении #1445045 писал(а):
я бы вообще советовал просто в тексте программы везде заменить тип на правильный

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

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

 
 
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:03 
Используется синтаксис C++
typedef  int64_t  _int64;
Прекрасно работает. И это самый правильный вариант видимо.
Раз уж намёков не понимаете.

 
 
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:13 
Аватара пользователя
Andrey_Kireew в сообщении #1445050 писал(а):
но дело в том, что он у меня повсюду, и всё переправлять - это проблема
Очень советую найти какой-нибудь способ заменять один идентификатор на другой сразу во всём проекте. Под линуксом - это sed -i 's/\<__int64\>/int64_t/g' на всех файлах (для чего есть find -exec).

 
 
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:23 
Большое спасибо Dmitriy40!
компилировалось (правда пришлось добавить #include <stdint.h>, но это мелочи)

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


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

 
 
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:25 
Аватара пользователя
Andrey_Kireew в сообщении #1445053 писал(а):
чтобы в зависимости от компилятора автоматически переключалось, правда пока не знаю как
Это только через ifdef. Но ИМХО лучше перестать гальванизировать компиляторы, не поддерживающие C++11.

 
 
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:30 
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 
Andrey_Kireew в сообщении #1445053 писал(а):
хорошо бы ещё сделать, чтобы в зависимости от компилятора автоматически переключалось, правда пока не знаю как
Примерно так:
Используется синтаксис C++
#ifndef  _MSC_VER
typedef  int64_t  _int64;
#endif

 
 
 
 Re: undeclare _int64 в gcc
Сообщение16.03.2020, 00:51 
Dmitriy40 в сообщении #1445057 писал(а):
Примерно так

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

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

 
 
 [ Сообщений: 25 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group