On page 30, he notes that core_cm3.c does not include its own core_cm3.h, commenting that it's "...not a big deal here, but certainly not good practice."
In addition, as an aside, he notes that CMSIS uses anonymous unions, which, whilst arguably beneficial where they've used them, also happens to break MISRA-C:2004 rule 1.1 (only use C99 features), which ARM claim CMSIS adheres to!
As he concludes, "...CMSIS has real promise, but there's still work to be done.".
As a general point regarding "requiring prototypes", I also feel that this is good practice - it protects from inadvertent incorrect calls to functions. So it's a bit bad if a library requires us to turn off this feature (even if only for its files - it's another thing to remember to maintain across projects!).
Retrieving data ...