crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Изменение константного *char
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Iron Bug Дата 1.4.2010, 18:52
  читай тут про Portability:
http://www.cplusplus.com/reference/clibrary/cstring/strchr/
Sokoloff Дата 1.4.2010, 16:50
  Переношу некоторые функции из чисто C-шного проекта в свой на C++.

В оригинальном проекте есть функция
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 работает по другому?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 7.2.2025, 8:57