Я пишу код на С++, который должен вызывать библиотеку, написанную на C99. Эта библиотека использует объявления массива типа C99 с ключевым словом static
в своих функциональных параметрах. I.e. как таковой:
void my_func(int n, int my_ints[static n]);
Однако при включении заголовков этой библиотеки в мой проект на С++ компилятор (clang) выдает предупреждение при использовании флага -pedantic
:
> g++ -pedantic -c my_code.cpp
In file included from my_code.cpp:
./my_c_lib.h: warning: variable length arrays are a C99 feature [-Wvla-extension]
void my_func(int n, int my_ints[static n]);
Каков правильный/лучший способ вызвать библиотеку C в этом случае? Помимо отключения предупреждения vla-extension
, есть ли какой-то путь вокруг него, который не включает переписывание заголовков библиотеки или запись промежуточной оболочки C?
Минимальный рабочий пример:
extern "C" {
void my_func(int n, int my_ints[static n]);
}
int main()
{
int* some_ints = new int[10];
my_func(10, some_ints);
delete[] some_ints;
return 0;
}