Не std::vector
, нет. Все, что связано с шаблонами, верно.
В целом, использование кода на C ++ неинтересно, но это возможно. Вы должны обернуть классы в простые функции, не относящиеся к классам, которые может вызывать ваш код C, поскольку C не выполняет классы. Чтобы сделать эти функции пригодными для использования из C, вы затем оборачиваете их объявлением extern "C"
, чтобы сообщить компилятору C ++ не выполнять искажение имен.
Затем вы можете скомпилировать функции-оболочки с помощью компилятора C ++ и создать библиотеку, с которой ваша программа на C может ссылаться. Вот очень простой пример:
// cout.cpp - Compile this with a C++ compiler
#include <iostream>
extern "C" {
void print_cout(const char *str) {
std::cout << str << std::endl;
}
}
/* print.c - Compile this with a C compiler */
void print_cout(const char *);
int main(void) {
print_cout("hello world!");
return 0;
}