Как в функции на языке Си отследить тот факт, что был передан аргумент, лежащий вне задекларированного (uint64_t) диапазона?
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
void simple(uint64_t x)
{
unsigned long long t = (unsigned long long) x;
if(t > (unsigned long long) UINT64_MAX)
{
printf("Out, x = %" PRIu64 "\n", x);
}
else
{
printf("In, x = 0x%llx\n", x);
}
}
int main()
{
simple(UINT64_MAX); // x = 0xFFFFFFFFFFFFFFFF
simple(UINT64_MAX+2); // x = 0x1
return 0;
}
Как в функции на языке Си отследить тот факт, что был передан аргумент, лежащий вне задекларированного (uint64_t) диапазона? При передаче большего числа, функция работает, но использует только младшие байты переданного аргумента.