As already mentioned, ## inserts two tokens together.
#define INT64_C(c) (c ## LL)
So, INT64_C(123) becomes (123LL) after macro expansion.
These macros exist, so you can use int64_t constants with the int64_t . On most 64-bit systems, a macro will be defined as such:
#define INT64_C(c) (c ## L)
This is due to the fact that on most 64-bit systems int64_t is long , so the constant should be 123L . On most 32-bit systems and on Windows, int64_t has a long long , so the constant should be 123LL .
source share