The README states as a goal: “Intended to be portable to any system with a C89 compiler and uint64_t support.”
The C89 syntax does not specify unsigned long long
(ULL
) constants because there is no requirement that a unsigned long long
type exists. We use ULL
in a few places, e.g.:
https://github.com/bitcoin-core/secp256k1/blob/39198a03eaa33d5902b16d3aefa7c441232f60fb/src/scalar_4x64_impl.h#L11
We should replace ULL
with the UINT64_C
macro from in stdint.h
. Note that UL
is not an issue: It’s in the C89 syntax and unsigned long
is guaranteed to have at least 32 value bits, so we can use it for uint32_t
constants. We may still want to change it for consistency and readability (clearer expression of intent).
Alternatively, we can do nothing (because noone seemed to care about this so far).