El autor documenta una ambigüedad nunca resuelta del estándar C89/C90 sobre las declaraciones implícitas de funciones, una característica del lenguaje eliminada en C99. Explica que, cuando se invoca una función no declarada, el compilador la inserta en el ámbito como extern int () en lugar de producir un error, y que los paréntesis superfluos alrededor del identificador cambian la semántica: f() declara f implícitamente, pero (f)() no.
A partir de ahí, plantea un caso límite. La expresión int f(int [sizeof(f())]) es válida porque f aún no está en el ámbito cuando se evalúa sizeof(f()) y se declara como int (), completándose después como int (int *). Añadir un solo carácter, int f(int f[sizeof(f())]), genera un código que Clang compila sin errores pero GCC rechaza.
La discrepancia se reduce a cómo se interpreta la frase "innermost block" del estándar, que nunca se llegó a precisar. Una lectura equipara "block" con "block scope" o "file scope", lo que haría el código legal; otra lo equipara con "innermost scope", lo que situaría la declaración implícita en el ámbito del prototipo de función y haría ilegal el parámetro f.
El autor señala indicios de que el comportamiento de Clang podría ser el más fiel al estándar, como el hecho de que la declaración implícita se especifica como extern int (), un especificador no permitido dentro del ámbito de prototipo de función. Dado que C99 eliminó las declaraciones implícitas hace más de 27 años, la ambigüedad no se resolverá oficialmente.
