Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2018, 14:23   #1
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию Приведение типов

Есть вот такое извращение

Код:
/* Parse a pointer.  Must parse whatever is produced by '%p' in sprintf(). */
static int duk__parse_pointer(const char *str, void **out) {
    const unsigned char *p;
    unsigned char ch;
    int count;
    int limit;
    long val;  /* assume void * fits into long */

    /* We only need to parse what our minimal printf() produces, so that
     * we can check for a '0x' prefix, and assume all hex digits are
     * lowercase.
     */

    p = (const unsigned char *) str;
    if (p[0] != (unsigned char) '0' || p[1] != (unsigned char) 'x') {
        return 0;
    }
    p += 2;

    for (val = 0, count = 0, limit = sizeof(void *) * 2; count < limit; count++) {
        ch = *p++;

        val <<= 4;
        if (ch >= (unsigned char) '0' && ch <= (unsigned char) '9') {
            val += ch - (unsigned char) '0';
        } else if (ch >= (unsigned char) 'a' && ch <= (unsigned char) 'f') {
            val += ch - (unsigned char) 'a' + 0x0a;
        } else {
            return 0;
        }
    }

    /* The input may end at a NUL or garbage may follow.  As long as we
     * parse the '%p' correctly, garbage is allowed to follow, and the
     * JX pointer parsing also relies on that.
     */

    *out = (void *) val;
    return 1;
}
компилятор сообщает

Цитата:
duk_minimal_printf.c:126:9: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] *out = (void *) val;
я не достаточно хорошо знаю С, поэтому если бы не запускал этот проект лично, то подумал бы что этот код даже не скомпилируется, но все же он работает. я понимаю, что это не критично, но хочется устранить, т. е. к какому типу необходимо привести val, что бы компилятор перестал выдавать указанное предупреждение?
Skype: CODERua

Последний раз редактировалось [CODER]; 01.05.2018 в 14:31. Причина: исправил опечатку
[CODER] вне форума Ответить с цитированием
Старый 01.05.2018, 14:51   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Код:
uintptr_t
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приведение типов _PROGRAMM_ Общие вопросы C/C++ 2 10.10.2013 19:15
Приведение типов данных с# Sergey_gorobets Помощь студентам 1 28.03.2013 17:27
приведение типов??? nikozavr C# (си шарп) 1 14.05.2011 22:29
С - приведение типов onewho Общие вопросы C/C++ 3 21.11.2010 00:12
Приведение типов в Qt mike_tihomirov Qt и кроссплатформенное программирование С/С++ 1 19.06.2010 13:14