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