Yup, phrased like that it's about right and a legitimate gripe. The limits in C90 were even worse. There are still a few projects around that use the requirement to treat more characters as significant in internal names to work around that, like so:
#define copy_from_memory copy1
#define copy_from_file copy2
And then provide the declarations and definitions of copy_from_memory and copy_from_file as normal, knowing that they will be renamed to copy1 and copy2 by the preprocessor.