Verifique o tipo de string (por exemplo, literal, array, ponteiro) passada para uma função [duplicate]
Esta pergunta já tem uma resposta aqui:
Restrict passou o parâmetro para uma string literal respostasTenho uma função, que aceita uma matriz de caracteres e seu tamanho:
void store_string (const char *p, size_t size); // 'p' & 'size' stored in map
A função é agrupada por uma macro como:
#define STORE_STRING(X) store_string(X, sizeof(X))
Meu problema é que, de alguma forma, quero proibir ou informar o usuário que apenas a string literal deve ser passada para essa função. Porque, se qualquer ponteiro ou matriz local for armazenado dentro do mapa, eles poderão sair do escopo e criar um caos!
Existe alguma maneira em tempo de compilação (preferencial) ou pelo menos em tempo de execuçã