logo
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.18.2.1 Как бороться с расхождениями

В общем случае программа на С++ использует многие возможности,

отсутствующие в ANSI C. Для такой программы незначительные расхождения,

перечисленные в $$R.18.2, явно перекрываются расширениями в С++. Когда

С++ и ANSI C должны иметь общие заголовочные файлы, нужно позаботиться,

чтобы эти файлы представляли текст на общем подмножестве этих языков.

Нельзя пользоваться специфическими возможностями С++ такими, как

классы, перегрузка и т.п.

Нельзя использовать одно имя для обозначения типа структуры и другого

типа.

Функцию без параметров следует описывать как f(void), а не просто f().

Глобальные объекты типа const следует явно специфицировать как static

или extern.

Для разделения частей программы на ANSI C и С++ можно использовать

условную трансляцию с предописанным именем __cplusplus.

Функции, которые могут вызываться из программ на обеих языках, должны

быть явно описаны, как функции, подлежащие связыванию с С.