Am Mon, 13 Mär 2000 schrieb Eric Schaefer:
Ich muss hier gerade einen gcc-only source nach ansi-c portieren. D.h. ich muss mir was ausdenken um "typeof" zu umschreiben. Folgendes Problem: #define ABC(X,Y) typeof((X)[0]*(Y)[0]) r angenommen X und Y sind vom typ (float*), welchen typ hat dann r?????? (ich weiss nur das da mit Vektoren rumgeopert wird)
Mehr zu typeof steht in info gcc:: C Extensions:: Typeof:: u.a. If you are writing a header file that must work when included in ANSI C programs, write `__typeof__' instead of `typeof'. *Note Alternate Keywords::.
Da X und Y Zeiger auf ein float-Array sind steht dann letztendlich da X[0]*Y[0] und da float*float=float müsste also float r rauskommen.
Test: #define ABC(X,Y) typeof((X)[0]*(Y)[0]) r float * x,*y; ABC(x,y); int main(){ printf("%d\n",sizeof(r)); return 0; }
gibt 4 aus und bei "double *x,*y;" 8.
Bye, Stephan