Мне нужно было перенести указатель файла на один символ назад. Поэтому я использовал fseek(f,-sizeof(char),SEEK_CUR);
. И на gcc всё нормально компилировалось, потом я перенёс этот код на Visual Studio 2017 и в нём такая запись уже не компилируется и проект не запускается, хотя красной волнистой линией не подчёркивается.
Выдаёт ошибку применение унарного минуса к типу без знака;результат оставлен без изменения
.
Поэтому у меня вопрос: как можно заставить такую запись работать, ведь gcc не ругался. Или как можно по-другому перенести указатель файла на одну позицию назад?
Результат sizeof
имеет беззнаковый тип. Применение унарного -
к беззнаковому значению не дает отрицательного значения, а дает "завернутое" положительное значение. -sizeof(char)
- это SIZE_MAX
, огромное положительное значение. Об этом вам и говорит компилятор.
Прекратите извращаться с sizeof
и просто напишите -1
. Если вы хотите все таки оставить sizeof
, то его результат нужно привести к знаковому типу ДО применения унарного -
: -(long int) sizeof(char)
(не (long int) -sizeof(char)
).
Имейте в виду, однако, что такой способ позиционирования не обязан поддерживаться в текстовых потоках.
Это всего лишь предупреждение.
Можно просто его игнорировать, можно выполнить приведение наподобие -int(sizeof(char))
(-(int)sizeof(char)
в C) или - чтоб строго соответствовать духу и букве C++ - как
-static_cast<int>(sizeof(char))
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском»
Есть одна исключительная ситуация, но нужно чтобы на нее было 2 разных реакции
При отладки кода на c++, IDE выводит вот такое сообщение: FTH: (11040): * Fault tolerant heap shim applied to current processThis is usually due to previous crashes
Не могу понять в чем ошибка при наследовании, компилятор пишет, что не определен базовый класс, хотя все заголовки и определение класса я сделалВот...