#include <stdio.h>

#define VA_EXAMPLE(...) (varargsExample((NameAndLong[]){__VA_ARGS__}))
typedef struct NameAndLong { const char* name; long long value; } NameAndLong;
long varargsExample(NameAndLong things[]);

int main(int argc, char **argv)
{
    VA_EXAMPLE(
      {"TestInt", 0},
      {"TestIntNegative", -1},
      {"TestLong", 0},
      {"TestSomethingBig",1LL<<62},
      {"TestLongNegative", -1},
      {NULL});
    return 0;
}

long varargsExample(NameAndLong things[])
{
    const char * name;
    long long nextValue;
    while ((name = things->name) != 0)
    {
        nextValue = things++->value;
        printf("Got [%s] with value [%lld]\n", name, nextValue);
    }
    return 0;
}