[devel] gcc4&multisync0.90
Alexey Shabalin
=?iso-8859-1?q?a=2Eshabalin_=CE=C1_gmail=2Ecom?=
Пн Май 29 18:26:21 MSD 2006
Спасибо.
я уже опробовал
*size = *size +1; - работает
29.05.06, Sergey N. Yatskevich<syatskevich на altlinux.ru> написал(а):
> В Пнд, 29/05/2006 в 16:26 +0400, Alexey Shabalin пишет:
> > День добрый
> > помогите собрать multisync0.90
> > gcc3.4 собирает, а gcc4 ругается на следующий участок.
> >
> > ===============================
> > static void msync_fs_make_config(fs_options *options, char **data, int *size)
> > {
> > xmlDocPtr doc;
> >
> > doc = xmlNewDoc((xmlChar*)"1.0");
> > doc->children = xmlNewDocNode(doc, NULL, (xmlChar*)"config", NULL);
> >
> > xmlNewChild(doc->children, NULL, (xmlChar*)"path",
> > (xmlChar*)options->path);
> > xmlNewChild(doc->children, NULL, (xmlChar*)"recursive",
> > (xmlChar*)(options->recursive ? "TRUE" : "FALS
> >
> > xmlDocDumpMemory(doc, (xmlChar **)data, size);
> > *size++;
> > }
> > ===================================
> > skip
> > ===================================
> > msync_fs_make_config(options, &config, &size);
> >
> >
> > file_sync.c: In function 'msync_fs_make_config':
> > file_sync.c:129: warning: value computed is not used
> >
> > file_sync.c:129 - это *size++;
> >
> > Если убрать * - ругань исчезает. коректно ли это?
> Нет, не корректно. Всё дело в приоритете операций разыменования
> указателя (*) и увеличения на единицу (++).
> Если развернуть данную конструкцию (*size++), то получится
> следующее:
>
> int* tmp = size;
> size = size + 1;
> *tmp; // вот здесь и ругается
>
> Судя по коду здесь просто к вычисленному xmlDocDumpMemory размеру
> добавляется единица (наверное для того, чтобы учесть завершающий
> '\0'), так что правильно должно быть так: (*size)++
>
> --
> Sergey N. Yatskevich <syatskevich на altlinux.ru>
>
> _______________________________________________
> Devel mailing list
> Devel на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
--
Alexey Shabalin
Подробная информация о списке рассылки Devel