Я смотрел на как 5 постов и до сих пор не могу понять, если это возможно ....C Определение размера массива внутри основной для структуры
typedef struct {
long double xc;
long double yc;
long double zc;
long double radio;
long double Kd;
long double Ka;
long double Ks; // specular
color fc;
} SPHERE;
// *array_of_spheres; // Original line omitted SPHERE
SPHERE *array_of_spheres;
int main(int argc, char** argv) {
int number_spheres = read_file();
//this return the number of spheres in the text file after fscanf
array_of_spheres = malloc(sizeof(SPHERE)*number_spheres);
.
.
.
.
}
Как вы видите, что нужно list_of_spheres быть глобальным, но я не знаю размер, пока не прочитаю файл, так как я могу инициализировать этот массив?
error: expected primary-expression before ‘)’ token
array_of_spheres = malloc(sizeof(SPHERE)*number_spheres);
Я попытался sizeof(SPHERE)
И sizeof(*SPHERE)
.
Исходный код находится в испанском в .h
typedef struct
{
long double xc;
long double yc;
long double zc;
long double radio;
long double Kd;
long double Ka;
long double Ks; // especular
color fc;
}esfera;
esfera *lista_esferas;
в .c после я прочитать файл и вычислить количество сфер:
lista_esferas = malloc(sizeof(*esfera)*cantidad_de_esferas);
^
RayT.c: 29 : 40: ошибка: ожидаемое первичное выражение перед ')' токеном lista_esferas = malloc (sizeof (* esfera) * cantidad_de_esferas);
Wrong предложение! И не бросайте 'malloc()', это плохая практика. –
Ваш испанский код не соответствует вашему английскому коду. Почему у вас есть '*' в 'sizeof (* esfera)' ??? Что это такое делает? Это должно быть просто 'sizeof (esfera)' или лучше 'sizeof * lista_esferas'. – AnT
Вам нужно либо 'sizeof (esfera)', либо 'sizeof (* lista_esferas)' или 'sizeof (lista_esferas [0])'. Вы не можете дешифровать не указатель, а 'esfera' - это простой тип структуры, а не тип указателя. –