R
Справочное
руководство по С++
R.18.2.1 Как бороться с расхождениями.
В общем случае программа на С++ использует многие возможности,
отсутствующие в ANSI C. Для такой программы незначительные расхождения,
перечисленные в $$R.18.2, явно перекрываются расширениями в С++. Когда
С++ и ANSI C должны иметь общие заголовочные файлы, нужно позаботиться,
чтобы эти файлы представляли текст на общем подмножестве этих языков.
- Нельзя пользоваться специфическими возможностями С++ такими, как
классы, перегрузка и т.п.
- Нельзя использовать одно имя для обозначения типа структуры и другого
типа.
- Функцию без параметров следует описывать как f(void), а не просто f().
- Глобальные объекты типа const следует явно специфицировать как static
или extern.
- Для разделения частей программы на ANSI C и С++ можно использовать
условную трансляцию с предописанным именем __cplusplus.
- Функции, которые могут вызываться из программ на обеих языках, должны
быть явно описаны, как функции, подлежащие связыванию с С.