Моя программа на C++ должна использовать внешнюю библиотеку C. Поэтому я использую
extern "C"
{
#include <library_header.h>
}
синтаксис для каждого модуля, который мне нужно использовать.
Это работало нормально до сих пор. Модуль использует имя this для некоторых переменных в одном из своих заголовочных файлов. Сама библиотека C компилируется нормально, потому что, насколько мне известно, this никогда не было ключевым словом в C.
Но, несмотря на то, что я использую синтаксис extern "C", я получаю ошибки из своей программы на C++, когда включаю этот заголовочный файл.
Если я переименую каждый элемент this в этом заголовочном файле библиотеки C во что-то вроде _this, все будет работать нормально.
Вопрос в том:
Разве синтаксиса extern "C" не должно быть достаточно для обратной совместимости, по крайней мере на уровне синтаксиса, для файла заголовка? Это проблема с компилятором?
extern "C"
, — это говорит компилятору не выполнять изменение имени. - person Some programmer dude   schedule 03.09.2014extern "C"
говорит использовать изменение имени C, что обычно означает добавление подчеркивания. - person Pete Becker   schedule 03.09.2014extern "C"
не волшебным образом переключает текущий язык на C. Все, что он влияет, это спецификация компоновки внешних объектов. Ваш заголовочный файл по-прежнему скомпилирован как код C++ и должен подчиняться всем правилам языка C++. - person AnT   schedule 03.09.2014