Initialisation d'une structure globale en C

Quelle est la meilleure façon d'accomplir les tâches suivantes dans le C?

#include <stdio.h>

struct A
{
    int x;
};

struct A createA(int x)
{
    struct A a;
    a.x = x;
    return a;
}

struct A a = createA(42);

int main(int argc, char** argv)
{
    printf("%d\n", a.x);
    return 0;
}

Lorsque j'essaie de compiler le code ci-dessus, le compilateur signale l'erreur suivante:

"initialiseur élément n'est pas constante"

La mauvaise ligne est celui-ci:

struct A a = createA(42);

Quelqu'un peut m'expliquer quel est le problème? Je ne suis pas très expérimenté en C. Merci!

source d'informationauteur Scott