Если я не заверну все свои файлы C в "extern C {...}", я получу искажение имени там, где я меньше всего этого ожидаю?
Это кусает вас, когда вы пытаетесь соединить C и C ++.
Я написал много заголовочных файлов, содержащих:
#ifdef __cplusplus
extern "C" {
#endif
// rest of file
#ifdef __cplusplus
}
#endif
Через некоторое время он сливается с существующим множественным включенным шаблоном, и вы перестаете его видеть. Но вы должны быть осторожны в том месте, где вы его поместили - обычно он принадлежит после , который включает любой заголовок.
Есть ли какая-то причина, почему я действительно не должен этого делать?
Если вы точно знаете, что не собираетесь объединять C и C ++, то нет причин делать это, о чем я знаю. Но с постепенной миграцией, которую вы описываете, важно, чтобы все с опубликованным интерфейсом использовалось как компонентами C, так и компонентами C ++.
Основная причина , а не , заключается в том, что она предотвращает перегрузку функций (по крайней мере, в этих заголовках). Возможно, вы захотите сделать это, как только вы перенесете весь свой код на C ++ и начнете поддерживать / реорганизовывать / расширять его.