Preferred way to define 64-bit constants?
I just committed the patch to change XLogRecPtr into a 64-bit constant,
and I did this in the patch:
#define XLogSegmentsPerXLogId (0x100000000LL / XLOG_SEG_SIZE)
But I started to wonder, is that LL representation the preferred way to
define 64-bit integer constants? I thought it is, but now that I grep
around, I don't see any constants like that in the source tree.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
On 24 June 2012 18:23, Heikki Linnakangas
<heikki.linnakangas@enterprisedb.com> wrote:
I just committed the patch to change XLogRecPtr into a 64-bit constant, and
I did this in the patch:#define XLogSegmentsPerXLogId (0x100000000LL / XLOG_SEG_SIZE)
But I started to wonder, is that LL representation the preferred way to
define 64-bit integer constants? I thought it is, but now that I grep
around, I don't see any constants like that in the source tree.
This looks to be a long long int literal. That's only specified in the
C99 standard, as well as GNU C. It may very well not be a problem in
practice, but I'm told that some very esoteric compilers could baulk
at things like that.
http://gcc.gnu.org/onlinedocs/gcc/Long-Long.html
--
Peter Geoghegan http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services
On sön, 2012-06-24 at 20:23 +0300, Heikki Linnakangas wrote:
I just committed the patch to change XLogRecPtr into a 64-bit constant,
and I did this in the patch:#define XLogSegmentsPerXLogId (0x100000000LL / XLOG_SEG_SIZE)
But I started to wonder, is that LL representation the preferred way to
define 64-bit integer constants? I thought it is, but now that I grep
around, I don't see any constants like that in the source tree.
See INT64CONST, UINT64CONST.
On 24.06.2012 21:34, Peter Eisentraut wrote:
On sön, 2012-06-24 at 20:23 +0300, Heikki Linnakangas wrote:
I just committed the patch to change XLogRecPtr into a 64-bit constant,
and I did this in the patch:#define XLogSegmentsPerXLogId (0x100000000LL / XLOG_SEG_SIZE)
But I started to wonder, is that LL representation the preferred way to
define 64-bit integer constants? I thought it is, but now that I grep
around, I don't see any constants like that in the source tree.See INT64CONST, UINT64CONST.
Thanks, fixed.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com