Besides what nrclark has written on his/her comment, C11 dropped
gets() and the introduction of the new memory model in C11 might break code that was relying on CPU specific semantics not in synch with it.
Regarding C++:
- auto changed its meaning on C++11
- export templates were removed in C++11
- exception specifications were deprecated in C++11, removed in C++17 and might do a come back in C++23 with value based exceptions
- gets() got removed in C++11
- declspec and auto had a small semantic difference, settled in C++17
- initializer lists introduced in C++11 changed their auto deduction type in C++17
- the required implementation semantics for std::string in C++11 broke COW in compilers like GCC.
Just a small list, there are a couple more.