web-dev-qa-db-fra.com

Structs Déclaration directe en C

Quel est le problème avec ce code? Je ne comprends pas pourquoi cela ne fonctionne pas.

struct point {
    int x;
    int y;
} eh;

void main() {
    eh = {1, 2};
    printf("%i", eh.x);
}

mais cela fonctionne bien

struct point {
    int x;
    int y;
} eh;

void main() {
    eh.x = 2;
    printf("%i", eh.x);
}
1
Ricardi

Ce type de syntaxe pourrait fonctionner dans d'autres langues, mais en C, vous devriez écrire:

eh = (struct point){1, 2};

L'expression sur le côté droit s'appelle un littéral composé.

7
David Grayson

Cela fonctionnerait également:

#include <stdio.h>

struct point {
    int x;
    int y;
};

int main(void) {
    struct point eh = {1, 2};
    printf("%i", eh.x);
}

Notez que j'ai supprimé certaines choses autour, ajouté le stdio.h Inclure et corrigé le type de fonction main et arguments.

0
Cheatah