В оригинальном проекте есть функция
static char *parseArglist(const char *buf)
{
char *start, *end;
int level;
if (NULL == buf)
return NULL;
if (NULL == (start = strchr(buf, '('))) // <-- ошибка "некорректное преобразование из ‘const char*’ в ‘char*’"
return NULL;
for (level = 1, end = start + 1; level > 0; ++end)
{
if ('\0' == *end)
break;
else if ('(' == *end)
++ level;
else if (')' == *end)
-- level;
}
*end = '\0';
return strdup(start);
}
Переношу к себе получаю ошибку "некорректное преобразование из ‘const char*’ в ‘char*’". Вроде понятно почему, т.к. параметр у функции "const char *buf", то для strchr выбирается константный вариант ( const char *strchr(const char *_s, int _c) ). А результат присваивается неконстантной переменной. Но мучает вопрос. Почему компилится сишная программа. Ведь "const char *buf" это указатель на константную строку, а в предпоследней строке мы меняем ее. Или в чистом C соnst работает по другому?