Это действительно элементарный вопрос. Тем не менее, я не нашел решения после изучения десятков полу релевантных примеров в Интернете.
У меня есть двумерный массив значений типа double, размер которого известен во время компиляции: double demPMFs[ NUM_DEM_PARAMS ][ NUM_AGE_CATEGORIES ]
. Записи массива заполняются входными файлами в начале программы. Я бы хотел передать отдельные строки в виде одномерных массивов функциям позже в программе. В идеале я хотел бы сохранить отдельные имена для каждой строки:
#define LSPAN_PMF demPMFs[0][]
#define FLEDGE_PMF demPMFs[1][]
#define PAIR_PMF demPMFs[2][]
#define BIRTH_AGE_PMF demPMFs[3][]
#define SPLIT_AGE_PMF demPMFs[4][]
(Здесь NUM_DEM_PARAMS = 5;
). Ниже приведена неудачная попытка передать строку функции:
int calcDeath( double demPMFs[][ NUM_AGE_CATEGORIES ] ) {
int age_death = rmultinom( LSPAN_PMF, NUM_AGE_CATEGORIES );
return age_death;
}
int rmultinom( const double p_trans[], int numTrans )
// ...[code snipped]...
}
Теперь я получаю ошибки компилятора о прототипах; Я ожидаю также столкнуться с проблемами с объявлением const
. Я могу вдаваться в подробности ошибок, если люди считают, что они актуальны, но я подозреваю, что многое уже можно исправить.