Excel / C - получить ввод с массивом *

Я работаю над простой надстройкой XLL и пытаюсь получить ввод с помощью обычного двойного * (не FP или OPER), потому что, насколько я понимаю, Excel должен работать с обычными типами данных C. Я не могу заставить его работать после многих модификаций, теперь он возвращает только значение в моей последней ячейке. Что я делаю не так?\

static AddIn xai_array_try(
    "?xll_array_try", XLL_DOUBLE XLL_DOUBLE_,
    "ARRAY.TRY", "Array",
    "STL", "Test Sum Array."
    );

double WINAPI xll_array_try(const double *arr) {
#pragma XLLEXPORT

    int i;
    double sum = 0;

    int size = 3;

    for (i = 0; i < size; ++i) {
        sum += arr[i];
    }

    return sum;
}

Если бы я получил его как FP или OPER, смог бы я передать его функции, которая принимает входные данные в виде массива?


person K-RAD    schedule 18.09.2014    source источник
comment
sizeof(arr) - это размер указателя, например. 4 или 8.   -  person mch    schedule 18.09.2014
comment
хорошо, я меняю его на число вроде 3, так как это только для тестирования. теперь я получаю доступ к местоположению чтения нарушения доступа   -  person K-RAD    schedule 18.09.2014
comment
сколько элементов у arr?   -  person mch    schedule 18.09.2014
comment
я набираю только 3. теперь он возвращает значение только в моей 3-й ячейке   -  person K-RAD    schedule 18.09.2014
comment
Как объявляется arr? как 2_?   -  person mch    schedule 18.09.2014
comment
const двойной * обр. это должно быть из таблицы excel   -  person K-RAD    schedule 18.09.2014


Ответы (1)


понял это в соответствии с этим

мой вывод надстройки был неправильным, и мой ввод функции был неправильным.

static AddIn xai_array_try(
    "?xll_array_try", XLL_DOUBLE "O%",
    "ARRAY.TRY", "Array",
    "STL", "Test Sum Array."
    );

double WINAPI xll_array_try(int *rows, int *columns, double *arr) {
#pragma XLLEXPORT

    int i;
    double sum = 0;

    int size = *rows * *columns;

    for (i = 0; i < size; ++i) {
        sum += arr[i];
    }

    return sum;
}
person K-RAD    schedule 18.09.2014