Używam czasami arytmetyki 64-bitowej w bibliotece C++ o otwartym kodzie źródłowym. Odkryłem, że long long
służy mi całkiem nieźle. Nawet 10-letnie urządzenie solaris może je skompilować. I działa bez zakłócania z #defines w systemie Windows.Jak wykonać przenośną 64-bitową arytmetykę, bez ostrzeżeń kompilatora
Problem polega na tym, że dostaję skargi od moich użytkowników, ponieważ kompilują się z ustawieniami GCC - a GCC nalega na ostrzeżenia, że long long
nie jest częścią standardu C++. Jest to prawdopodobnie słuszne, ale nie jestem zbyt zainteresowany standardem C++ per se, po prostu chcę, aby mój kod działał na tak wielu kompilatorach, jak to tylko możliwe.
Więc moje pytanie jest dwojaki:
- może ktoś wymienić rzeczywiste C++ kompilatory, które nie obsługują 64 bit długo Longa?
- Czy istnieje sposób, aby skompilować GCC 64-bitową arytmetykę (na platformie 32-bitowej) bez ostrzeżeń kompilatora? (stdint.h nie pomaga, ponieważ zależy również od
long long
)
P.S.
Jeśli istnieją platformy, na których długie odcinki stają się 128-bitowe lub większe, jest to interesujące, ale nie stanowi to dla mnie problemu.
Użycie polecenia -pedantic to dobry sposób na uzyskanie * nie * pracy i uniemożliwienie korzystania z większości bibliotek stron trzecich bez ważnego powodu. To jest to, co mówi na blaszce - bezsensowna skarga, ale nie sądzę, że mówienie swoim użytkownikom, aby przestali być tak głupi, przydałoby by się wam ich !? – Clifford
@Clifford: '-pedantic' jest po to, aby pomóc ci napisać kod, który będzie łatwy do przeniesienia do innych kompilatorów w przyszłości. Jeśli nie martwisz się o to, nie musisz go używać, ale w końcu będziesz osobą, która pisze te biblioteki osób trzecich, które (a) produkują dziwne ostrzeżenia, i (b) całkiem możliwe, że nie ". t działa na niektórych kompilatorach. To prawda, że 'long long' nie jest najprawdopodobniej prawdziwym problemem, ale kiedyś pracowałem na przenośnym produkcie i kilkakrotnie naprawialiśmy rzeczy z chłopców z Windowsa, które faktycznie nie działały na niektórych naszych platformach (i gcc -pedantic powiedziałbym im tak). –
... o dziwo, kiedy programiści Linuksa pracowali nad przenośnym komponentem produktu, ich kod był mniej prawdopodobny, aby nie przejść testów na innych platformach. –