C i C ++ mają wiele różnic i nie wszystkie poprawne kody C są poprawnymi kodami C ++.
(Przez „prawidłowy” rozumiem standardowy kod ze zdefiniowanym zachowaniem, tj. Nie jest specyficzny dla implementacji / niezdefiniowany / itp.)
Czy istnieje scenariusz, w którym fragment kodu poprawny zarówno w C, jak i C ++ powodowałby inne zachowanie po skompilowaniu ze standardowym kompilatorem w każdym języku?
Aby było to rozsądne / przydatne porównanie (staram się nauczyć czegoś praktycznie przydatnego, a nie próbować znaleźć oczywiste luki w pytaniu), załóżmy:
- Nic nie jest związane z preprocesorem (co oznacza brak hacków
#ifdef __cplusplus
, pragm itp.) - Wszystko zdefiniowane w implementacji jest takie samo w obu językach (np. Ograniczenia liczbowe itp.)
- Porównujemy stosunkowo nowe wersje każdego standardu (np. C ++ 98 i C90 lub nowszy)
Jeśli wersje mają znaczenie, proszę wspomnieć, które wersje każdego z nich mają inne zachowanie.