crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 4:38