// C11 snprintf that gives a compile-type error when used with anything other
// than an array.

#include <stdio.h>

#define arrprintf(array, fmt, ...) \
    _Generic(&(array), char (*)[]: snprintf((array), sizeof(array), fmt, __VA_ARGS__))

int main(int argc, char *argv[]) {
    char array[100];
    arrprintf(array, "Hello world! %d\n", argc);

    char *pointer = array;
    arrprintf(pointer, "Goodbye world! %d\n", argc);

    return 0;
}
