Annex C (informative) Compatibility [diff]

C.1 C++ and ISO C [diff.iso]

C.1.4 Clause [expr]: expressions [diff.expr]

[expr.call]
Изменение: Неявное объявление функций запрещено.
Обоснование: типобезопасная природа C ++.
Влияние на исходный объект: удаление семантически четко определенного объекта. Примечание: исходная функция была помечена как «устаревшая» в ISO C.
Сложность преобразования: синтаксическое преобразование. Средства для создания явных объявлений функций довольно широко распространены на рынке.
Насколько широко используется: Обычный.

[expr.post.incr], Изменение: оператор декремента не может использоваться с операндом. Обоснование: функция с удивительной семантикой. Влияние на исходную функцию: допустимое выражение ISO C, использующее оператор декремента для lvalue (например, через C typedef in ), неправильно сформировано в этом международном стандарте. [expr.pre.incr]
bool

bool <stdbool.h>

[expr.sizeof], Изменение: Типы должны определяться в объявлениях, а не в выражениях. В C выражение sizeof или выражение приведения может определять новый тип. Например, [expr.cast]

p = (void*)(struct x {int i;} *)0;

определяет новый тип struct x.
Обоснование: этот запрет помогает прояснить расположение определений в исходном коде.
Влияние на исходный объект: удаление семантически четко определенного объекта.
Сложность преобразования: синтаксическое преобразование.
Насколько широко используется: редко.

[expr.cond], [expr.ass], Изменение: Результат условного выражения, выражений присваивания или выражений запятой может быть именующим. Обоснование: C ++ - объектно-ориентированный язык, в котором относительно больше внимания уделяется lvalue. Например, функции могут возвращать lvalue. Влияние на исходную функцию: изменение семантики четко определенной функции. Некоторые выражения C, которые неявно полагаются на преобразования lvalue-to-rvalue, дадут разные результаты. Например, [expr.comma]


char arr[100];
sizeof(0, arr)

дает 100 в C ++ и sizeof(char*) C.
Сложность преобразования: программы должны добавлять явное приведение к соответствующему rvalue.
Насколько широко используется: редко.