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)