C99 doesn't need function bodies, or 'VLAs are Turing complete'
This is only tangential to the article:<p>C isn't Turing complete without `fseek` (as far as I can tell).<p>Turing completes requires you to be able to read/write from an infinite tape (essentially infinite memory). This isn't possible in C, because `sizeof` is a constant expression, thus limiting the size of any type, and importantly also pointer type, to a finite number, thus making the addressable memory finite.<p>From what I can tell, the only way you could theoretically access an infinite tape is using `fseek` with `SEEK_CUR`.<p>There might be more shenanigans possible with `stdio.h`, but I'm pretty sure C can't be Turing complete without the `stdio.h` function (assuming no special language extensions).<p>If anybody is wondering, the preprocessor isn't Turing complete either, because you might theoretically have infinite memory, but then you only have finite recursion, which also isn't enough for Turing completeness. File iteration can have infinite recursion, but can also only carry over finite state between `#include`s.<p>Edit: I'm not talking about any real world implementation, but rather about the theoretical bounds of the C abstract machine.