ругается gcc но BC3.11 нормально компилит

программирование C++

Собственно вот
double **Matr;
size_t i;
Matr=(double **)Malloc(2*sizeof(size_t)+n*sizeof(double *));
(size_t*)Matr+=2;
бс этот код нормально компилит, а gcc ругается на (size_t*)Matr+=2;
как поправить чтоб gcc не чего не говорил ?

Примечание:
вот полная функция
Смысл в конце хранить размерность матрицы
double **MakeMatr(size_t n,size_t m)
{
double **Matr;
size_t i;
Matr=(double **)Malloc(2*sizeof(size_t)+n*sizeof(double *));
(size_t*)Matr+=2;
for(i=0;i<n;i++)
Matr[i]=(double *)Malloc(m*sizeof(double));
Matr[n]=NULL;
*((size_t*)Matr-2)=n;
*((size_t*)Matr-1)=m;
return Matr;
}
Ответы:
Если я правильно понял, что делает BC в этом случае, то эквивалентный код должен быть такой:
Matr=(double **)((size_t *) Matr + 2);
не очень понятно, правда, какой в этом смысл
выражение (size_t*)Matr является rvalue.
к rvalue операцию = применять нельзя.
прежде чем "поправить чтоб gcc не чего не говорил" нужно решить вопрос, что ты пытаешься этим сделать?
что хочешь получить в результате?


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.