Jakie są niezgodne różnice między C (99) i C ++ (11)?

To pytanie zostało wywołane przez repliki do apost autorstwa Herb Suttera gdzie wyjaśnił decyzję MS o nie wspieraniu / tworzeniu kompilatora C99, ale i tak po prostu korzystał z funkcji C (99), które są w standardzie C ++ (11).

Jedenkomentator odpowiedział:

(...) C jest ważne i zasługuje przynajmniej na odrobinę uwagi.

Istnieje wiele istniejących kodów, które są poprawne C, ale nie są poprawne C ++. Ten kod prawdopodobnie nie zostanie przepisany (...)

Ponieważ programuję tylko w MS C ++, tak naprawdę nie znam dobrze „czystego” C, tj. Nie mam gotowego obrazu tego, które szczegóły języka C ++, którego używam, nie są w C (99) i mam mało wskazówki, w których kod C99 nie działałby tak jak w kompilatorze C ++.

Zauważ, że wiem tylko o C99restrict słowo kluczowe, które dla mniewydaje się mieć bardzo wąską aplikację i tablice o zmiennej długości (których nie jestem pewien, jak szerokie lub ważne).

Ponadto bardzo interesuje mnie, czy istnieją jakieś znaczące różnice semantyczne lub zmiany, czyli kod C (99)skompilować w C ++ (11), ale rób coś inaczej z kompilatorem C ++ niż z kompilatorem C.

Szybkie linki: zasoby zewnętrzne z odpowiedzi:

Strona WikipediiPorównanie Davida R. Tribble'a (od 2001)Standard C ++ 11:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf (sekcja C.1)

questionAnswers(4)

yourAnswerToTheQuestion