On Mon, Aug 20, 2012 at 6:39 AM, Stefan Behnel <stefan...@behnel.de> wrote: > Hi, > > I'm getting test build failures with the new arrayarray.h header file when > I enable "--std=c89" or "c99" in the CFLAGS: > > """ > memoryview_inplace_division.c:877: warning: declaration does not declare > anything > memoryview_inplace_division.c:893: warning: declaration does not declare > anything > memoryview_inplace_division.c: In function ‘newarrayobject’: > memoryview_inplace_division.c:929: error: ‘arrayobject’ has no member named > ‘ob_item’ > ... > """ > > The lines it warns about (and which trigger the subsequent errors) are the > following union declarations: > > """ > typedef struct arrayobject { > PyObject_HEAD > union { > Py_ssize_t ob_size, length; > }; > union { > char *ob_item; > float *_f; > double *_d; > int *_i; > unsigned *_I; > unsigned char *_B; > signed char *_b; > char *_c; > unsigned long *_L; > long *_l; > short *_h; > unsigned short *_H; > Py_UNICODE *_u; > void *_v; > }; > ... > """ > > Apparently, anonymous unions only became part of the C standard in C11: > > http://stackoverflow.com/questions/3228104/anonymous-union-within-struct-not-in-c99 > > That's unfortunate, but I think we'd best give the unions a name (and let > users change all code that uses them ...).
I suppose we could do this. Actually, my_array.data.* isn't that bad. (Would it be to verbose to do "my_array.data.as_doubles" while we're on the topic of changing names?) > BTW, is there any reason we have a "length" field at all? Shouldn't we be > using Py_SIZE() ? I just kept the code as it was (which is why I added the extra compile args), but wouldn't be opposed to this change either. Supporting itemsize directly might be more useful. - Robert _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel