Je veux un pointeur global vers une structure allouée statiquement.Pointeur global vers une structure allouée statiquement
Cette compile
struct sa{
int a, b;
char const* c;
};
struct sa* sap = &(struct sa){42,43,"x"};
mais est-ce C portable juridique &, ou dois-je faire quelque chose comme ?:
static struct sa x = {42,43,"x"};
struct sa* sap2 = &x;
vous avez besoin de votre 2ème exemple (déclarer x puis prendre est adr) – bolov
Êtes-vous sûr, @bolov? Il n'est pas immédiatement évident pour moi que vous ne devriez pas être en mesure de prendre l'adresse d'un littéral composé. Je vais devoir faire des recherches. –
Demandez-vous si l'application de l'opérateur d'adresse '&' contre un [littéral composé] (http://en.cppreference.com/w/c/language/compound_literal) est légale? Leur valeur-catégorie est * lvalue *, après tout, donc cela devrait être pris en charge. – WhozCraig