Eclipse жалуется, что метод c_str не может быть разрешен

#c #eclipse #c 11 #g 4.8

#c #eclipse #c 11 #g 4.8

Вопрос:

Как моя программа может успешно скомпилироваться, но eclipse показывает мне «Семантические ошибки» и как я могу избавиться от этих ошибок?

У меня есть следующие сообщения об ошибках Method 'c_str' could not be resolved (это происходит также для сравнения и размера строк)

Вот пример:

 std::string someotherstring = "test";
std::string name = someotherstring.c_str();
  

Проблема здесь в том, что он также создает последующие ошибки, которые кажутся неверными, мое программное обеспечение компилируется и запускается по назначению и даже использует c_str() возврат «» для обработки сообщений. Похоже, это проблема только с отображением в Eclipse.

Я искал уже несколько часов, пытался использовать пользовательский индексатор, но по какой-то причине он не исчезнет. Возможно, у кого-то еще есть хорошая идея, что здесь делать, поскольку Google ничего не сообщает об этой конкретной проблеме. (Я даже пытался использовать разные стандартные флаги C 11, поскольку думал, что это может повлиять)

Комментарии:

1. Это звучит как проблема eclipse, а не проблема C ?

2. @djechlin: Если вы предполагаете, что теги C не имеют отношения к делу (не уверен, что это так), я не согласен. Это проблема с eclipse при использовании C . У человека, использующего Java с eclipse, вероятно, нет такой же проблемы.

3. @BenjaminLindley Теги C имеют значение; но следует пояснить, что это проблема Eclipse. Мне пришлось прочитать вопрос пару раз, чтобы убедиться в этом; это должно быть ясно до того, как будет достигнуто тело вопроса. Поэтому я отредактировал заголовок.

4. Вы включили std::string ? Настроен ли компилятор на использование C (g не gcc)?

5. Я включил <string> этого должно быть более чем достаточно? Поправьте меня, если я ошибаюсь. Если вам требуется дополнительная информация, пожалуйста, сообщите мне, поскольку я перепробовал все возможное, насколько мне известно.

Ответ №1:

У меня была та же проблема. Решается простым запуском index -> rebuild . Вы можете найти это, нажав на главную папку проекта правой кнопкой мыши. Приветствия

Комментарии:

1. Спасибо, это помогло мне!

Ответ №2:

Если вы создаете свои проекты с использованием mingw и C 11, вы не можете использовать параметр диалекта по умолчанию -std=c 0x .

Нажмите «Компилятор GCC C » и в текстовом поле Command: введите -std= gnu 0x после g

Комментарии:

1. об этом спрашивали 3 года назад 😉 возможно, вы немного опоздали

2. У меня только что была точно такая же проблема с Eclipse CDT Kepler в последней версии mingw, так что это все еще актуальная проблема для всех, кто ищет.