Strtok со строковым литералом в качестве параметра

Почему компиляция с -Wpedantic предупреждает о присваивании из несовместимого типа указателя при передаче строкового литерала в качестве второго параметра в char *strtok(char *str, const char *delim); и что с этим можно сделать?

@WeatherVane: он не записывает во второй параметр. В OP конкретно говорится, что компилятор помечает параметр второй, разделитель, который помечен как const. Нам нужен минимальный воспроизводимый пример.

ShadowRanger 30.01.2019 21:26

второй аргумент не должен быть проблемой. Можете ли вы поделиться фрагментом кода, который вызывает ошибку?

Jean-François Fabre 30.01.2019 21:27

Пожалуйста, покажите пример кода.

Ctx 30.01.2019 21:28

Пожалуйста, покажите реальный код. Проблем быть не должно — значит, вы делаете что-то необычное. Он не должен быть очень большим — 10 строк будут неожиданностью — так что вы создадите хороший MCVE (минимальный воспроизводимый пример).

Jonathan Leffler 30.01.2019 21:28

Это не должно. Вместо описания кода покажи код.

dbush 30.01.2019 21:28

@ShadowRanger двое из нас неправильно его поняли, но обычно в качестве второго параметра используется строковый литерал.

Weather Vane 30.01.2019 21:30

@WeatherVane: Да. Это была моя первая мысль, как и сразу же, как я увидел "strtok" и "строковый литерал" вместе в посте. Без кода мы никогда не узнаем.

ShadowRanger 30.01.2019 21:33

Если бы это была константа, это был бы -Wwrite-strings, а не -Wpedantic, в сообщении об ошибке было бы указано discards 'const' qualifier from pointer target type (не несовместимый тип указателя), и в нем не упоминалось бы «назначение».

melpomene 30.01.2019 21:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
8
97
1

Ответы 1

Поскольку предупреждение гласит: «Назначение из несовместимого типа указателя», проблема должна быть в левой части присваивания от strtok, например, так:

int *foo;
foo = strtok(s, ",");

Вы должны убедиться, что левая часть вашего назначения имеет совместимый тип указателя, например char * или void *.

Другие вопросы по теме