Рейтинг:
8
Rick York
Создайте заголовочный файл с прототипами для всех ваших функций. Оберните их в extern заявление, как это :
extern "C" {
// prototypes go here
}
{ редактировать }
Если вы ожидаете, что ваш файл будет использоваться как в C, так и в C++, то это обычный способ справиться с этим :
#ifdef __cplusplus
extern "C" {
#endif
// prototypes for things that need to be labelled "from C" go here
#ifdef __cplusplus
}
#endif
Southmountain
спасибо, что поделились этим! когда я реализую этот прототип функции, нужно ли мне снова поместить этот оператор extern?
extern "C"{
//implementationint function_name(int,int)
{
//code logic here
}
}
Rick York
Когда вы реализуете эти функции, они будут находиться в файле .c, не так ли? Если это так, то вам не нужно еще одно внешнее утверждение. Если вы поместите их в файл .cpp или используете компилятор c++ для этого файла, то вам снова понадобится оператор extern.
Southmountain
да, я предпочитаю, чтобы мои файлы .c оставались нетронутыми. мое понимание обеспечивается вашим подтверждением!
огромное вам спасибо!
Rick York
И последнее: если ваш файл будет использоваться в c++ и c, то он обычно обрабатывается с помощью другого слоя макросов. Пожалуйста, ознакомьтесь с пересмотренным решением.
Southmountain
Большое спасибо!!!
Рейтинг:
1
OriginalGriff
Это один из способов ... а поскольку C++ - это C с надстройками, он должен работать нормально (и гарантировать, что код построен для того же самого since: x86 vs 64 bit, например.
Другой способ-построить его как библиотеку и связать с вашим приложением, чтобы вам не нужно было вносить в него никаких реальных изменений.
Я сам предпочитаю библиотеки, так как сложнее испортить код по ошибке ... :смеяться:
Southmountain
спасибо, ОГ! поскольку у меня есть исходный код, я думаю добавить их непосредственно в проект...
OriginalGriff
Серьезно, я бы построил файл библиотеки и включил его в проект: это делает управление версиями намного проще!
Southmountain
вы поместили lib в свой репозиторий кода?
OriginalGriff
Может, попробуешь спросить по-английски? :смеяться: