Hi Tiago, On 08/05/21 18:47, Thiago Macieira wrote: > And the problem is that they *do* depend on the CPU architecture. long > changes > size depending on OS and pointer size.
yes, I knew that long changes size depending on the architecture, but: > As far as I am concerned, the fact that > int64_t, size_t and ptrdiff_t sometimes (not always!) use long is a > misfeature. Those decisions were made in the early 90s by C, before long long > existed in the standard, and before C++ with overloads and ABI became an > important thing. So we carry some legacy. what I didn't know (or wasn't fully aware of the consequences) is that the {,u}intX_t types are just typedefs. >> Interestingly, I'm seeing this on amd64 only; it seems that on armhf >> everything is working fine. Could it be a bug with the compiler? > > No, that's because there the compiler defines int64_t as a different type > (long long) because long is only 32-bit. I see, now it makes sense. It looks like so far I managed to workaround the problem by changing int64_t to qint64 in a handful of places only, and changing the metatype registration to: qRegisterMetaType<qint64>("int64_t"); qRegisterMetaType<quint64>("uint64_t"); which makes Q_PROPERTY use the right type when I declare them as int64_t. Though maybe I'll eventually get rid of int64_t completely... Ciao and thanks, Alberto -- http://www.mardy.it - Geek in un lingua international _______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development