On Apr 15, 2012, at 5:29 PM, Jonathan M Davis wrote: > On Sunday, April 15, 2012 09:07:03 Sean Kelly wrote: >> On Apr 13, 2012, at 1:48 PM, "Jonathan M Davis" <[email protected]> wrote: >>> On Friday, April 13, 2012 22:18:16 Don Clugston wrote: >>>> Interestingly, the ref int[3] idiom is documented as working, under >>>> 'interfacing with C'. >>>> Anything beyond that seems to be undefined. >>>> That page seems to document dynamic arrays as _not_ working -- >>>> certainly as having no C equivalent. >>> >>> Which seems really backwards considering that in both case, you'd be using >>> T* in C, and if anything, dynamic arrays are closer to that than static >>> arrays. Personally, I'd have expected arr.ptr to be required in both >>> cases. >> The problem is mostly with stuff like: >> >> extern (C): >> alias int[2] foo; >> void fn(foo); >> >> Now make the alias platform-dependent (as in the Posix package) and tell me >> what the prototype for fn() should be. Fortunately, static array args are >> almost nonexistent in C99 and Posix. > > It was my understanding that you arrays in C are _always_ passed as a pointer > and that even if you use [] instead of * on the parameter, it's the same as > using * and that there was no way to specifically pass a static array > differently from a dynamic one. But I may remember that incorrectly, since I > almost never use static arrays. > > If I'm right though, then fn will just always take an int*.
Sure⦠as long as you're sure "foo" is a static array. But if it's an alias that the spec allows to be an opaque type... _______________________________________________ dmd-beta mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/dmd-beta
