мой код показывает это предупреждение при компиляции с помощью« g ++ -Wall -pedantic -Wno-long-long -c main.c ». Я должен составить в этом режиме, becouse его домашнее задание, и мы имеем приложение, которое исправляет их и использует этот режим компиляцииПочему я получаю «Неверное преобразование из« void * »в ошибку« int ** »?
- Ошибка:. недопустимое преобразование из «пустоты» в «Int **» [-fpermissive ]
- Ошибка: неправильное преобразование из "пустоты" в "Int *" [-fpermissive]
- Ошибка: неправильное преобразование из "пустоты" в "основной (INT, символ * ) :: VYSLEDEK" [-fp ermissive]
такие же ошибки продолжаются, как и в моей программе. Я попытался изменить почти все в этом realloc, это все равно.
Части кода:
struct VYSLEDEK
{
int sirka;
int vyska;
int zacatek_x;
int zacatek_y;
int soucet;
} *vysledek;
int **matice,**soucty;
.....
matice=(int**)malloc(1*sizeof(int*));
matice[0]=(int*)malloc(1*sizeof(int));
soucty=(int**)malloc(1*sizeof(int*));
soucty[0]=(int*)malloc(1*sizeof(int));
.....
1. matice=realloc(matice,naalokovano*2*sizeof(int*));
2. soucty=realloc(soucty,naalokovano*2*sizeof(int*));
.....
for (i=0;i<(naalokovano*2);i++)
{
3. matice[i]=realloc(matice[i],sizeof(int));
4. soucty[i]=realloc(soucty[i],sizeof(int*));
};
.....
5. vysledek=realloc(vysledek,vysledku*sizeof(struct VYSLEDEK*));
Спасибо за вашу помощь.
В C, * никогда * не отбрасывать правую сторону присваивания: т. Е. Отбрасывать '(int **)' cast from '(int **) malloc'. Это не нужно и делает код сложнее поддерживать. Обратите внимание, что вы используете компилятор C++. – Bathsheba
Используя g ++, вы компилируете свой C-код как C++. Чтобы сделать это, вам нужно вернуть возврат из 'realloc'. Ваши призывы к 'malloc' приводят примеры того, как это сделать. – simonc
@Bathsheba Это не C++ хотя (поскольку g ++ используется как компилятор)? – simonc