C preprocessor

Aravanis Konstantinos kos.arav at gmail.com
Wed Nov 3 10:57:29 EET 2010


On Wednesday 03 November 2010 10:51:25 Aravanis Konstantinos wrote:
> Δε προλαβαίνω να το κοιτάξω παραπάνω αλλά μήπως το λάθος είναι κάπου στο
> while... (μπορεί να λέω βλακεία)
> 
> Το λέω γιατί το παρακάτω μου τρέχει
> 
> #include <stdio.h>
> 
> #define fun(A,B)  A.a = 5 + B.a; A.b = -5 + B.b;
> 
> typedef struct
> {
>    int a;
>    int b;
> }mytype_t;
> 
> void main(void)
> {
>    mytype_t mpla, mplo = {6,7};
>    fun(mpla, mplo);
>    printf("A = <%d, %d>\nB = <%d, %d>\n", mpla.a, mpla.b, mplo.a, mplo.b);
> }
> 
> Τα αποτελέσματα που παίρνω είναι
> A = <11, 2>
> B = <6, 7>

Για την ακρίβεια ο κώδικας είναι με διορθωμένο και το while... δλδ ένα 
ερωτηματικό στο τέλος...

#include <stdio.h>

#define fun(A,B)  \
do { \
   A.a = 5 + B.a; \
   A.b = -5 + B.b; \
}while(0);

typedef struct
{
   int a;
   int b;
}mytype_t;

void main(void)
{
   mytype_t mpla, mplo = {6,7};
   fun(mpla, mplo);
   printf("A = <%d, %d>\nB = <%d, %d>\n", mpla.a, mpla.b, mplo.a, mplo.b);
}

--
Aravanis Konstantinos // sbosx
My site & blog: AravanisKostas.com 
TasPython.eu ...because simplicity matters!


More information about the Linux-greek-users mailing list