ludovic.cour...@inria.fr (Ludovic Courtès) writes:

>> Perhaps something like
>>
>> extern void foo (int a, int x[__attribute__ ((dim (a)))])
>>
>> could be implemented.
>
> Why use special syntax for this?  It seems to me that ‘int x[a]’ conveys
> the exact same information.

Using special syntax permits programmers to use the preprocessor to
write code that will work both when using versions of gcc that support
this extension and when using versions of gcc, or other compilers
entirely, that do not support it.


>> This would issue an error if foo were called such that the length of
>> the x were not at least a.  A serious problem with this approach would
>> be that it is not reliable, since the caller of foo might not know the
>> length of the array being passed as a pointer.
>
> In that case the call site could just be ignored, or a “cannot determine
> array size” warning could be issued.

I'm not really satisfied with that, personally.  If using this extension
does not provide any sort of guarantee, then I don't think it buys us
very much.  It merely becomes documentation.  There is some value to
documentation expressed in code, but at least for me I don't think it
has enough value to support a change to the language.  I think we need
to cross a much higher barrier for language changes than we do for,
e.g., new optimizations or new warnings.

Ian

Reply via email to