#define verwenden



  • Ich habe eine große, konstante Struktur in einem großen Programm.
    Auf diese Struktur wird über einen Zeiger zugegriffen.

    Nun möchte ich alle Zugriffe auf Strukturname->BestimmtesElement "umleiten" auf eine andere Variable. Wie mache ich das am günstigsten?

    Ich dachte sowas wie

    #define Strukturname->BestimmtesElement Variablenname

    aber das scheint nicht zu gehen 🙂



  • Ne, das geht nicht - da hat der Präprozessor seine Grenzen erreicht 😉

    (in C++ könntest du für sowas statische Member oder Referenzen verwenden)



  • Warum sollte das nicht gehen ...

    struct blah
    {
    	int p;
    };
    
    int
    main()
    {
    	struct blah *b = malloc(sizeof(struct blah));
    
    	b->p = 1;
    
    	printf("%d\n", b->p);
    
    #define x b->p
    
    	x = 2;
    	printf("%d\n", x);
    
    #undef x
    
    	free(b);
    
    	return 0;
    }
    


  • feigling schrieb:

    Warum sollte das nicht gehen ...

    Ja, so rum geht es 😉 Aber de OP wollte es genau andersherum machen:

    int x;
    #define b->p x
    b->p = 7;
    

    (und das geht nicht)


Anmelden zum Antworten