Ошибка индексатора CDT с typedef внутри ifdef

У меня проблемы с индексатором. Критикуется использование SOCKET в методе:

#ifndef TEST_H_
#define TEST_H_

#ifdef linux
typedef int SOCKET;
#endif

class Test {
public:
void test(const SOCKET src);
};

#endif /* TEST_H_ */

Моя версия Eclipse: Версия: Luna Service Release 2 (4.4.2) Идентификатор сборки: 20150219-0600

мой CDT 8.6.0.201502131403

вот сообщение от индексатора: тип ‘SOCKET’ не может быть разрешен

Некоторые факты:

  • ‘Linux’ определен!
  • если я удалю ‘ifdef’ вокруг typedef, индексатор больше не сообщит об ошибке!

Тем не менее код будет скомпилирован с и без ifdef. Но я хочу решить проблему индексации с помощью ifdef. Есть идеи?

С уважением
Rainer

0

Решение

Является ли ifdef серым, как на этом скриншоте:

Снимок экрана с изображением редактора Greyed out

Если это так, то CDT не знает, что символ «linux» определен. Чтобы определить его, у вас есть несколько вариантов, в зависимости от ваших настроек.

Удалось сделать

Управляемое make означает, что вы позволяете CDT создавать ваши make-файлы для вас.

Вариант 1: вы являетесь родным Linux и используете GCC, тогда я подозреваю, что что-то идет не так, пожалуйста, сообщите об ошибке.

Вариант 2: вы выполняете кросс-компиляцию, тогда это проблема установки вашего проекта / рабочего пространства (к сожалению, здесь нужно больше подробностей).

Стандартная марка

Стандартный make означает, что вы пишете make-файлы самостоятельно (или каким-то другим инструментом).

Вариант 1: вы не запускали сборку из Eclipse CDT, поэтому CDT не знает, каковы ваши настройки сборки. CDT анализирует результаты выполнения make, чтобы определить, какие настройки должны быть.

Вариант 2: Вы запустили make изнутри CDT, но у вас подавлено отображение команд (@ on команды). Попробуйте запустить make без этого.

Вариант 3: Вам нужно сообщить CDT о символах, которые определены. Чтобы рассказать CDT:

  1. Откройте Свойства проекта (щелкните правой кнопкой мыши проект и выберите «Свойства»)
  2. Откройте «C / C ++ General» — страницу настроек «Paths and Symbols» и выберите вкладку «Symbols»
  3. Нажмите кнопку Добавить, чтобы определить новый символ
  4. Заполните детали символа. В вашем случае вы, вероятно, захотите Name = linux и Value = 1 (я использовал unknown_symbol на скриншотах, потому что linux уже был определен в моей системе). Возможно, вы захотите применить это ко всем языкам и всем конфигурациям сборки, установив два флажка.

символы

  1. Нажмите OK несколько раз, пока не вернетесь к редактору. В одном из диалогов, которые вы можете получить, будет предложено перестроить индекс. Скажи да этому.

перестроить подсказку индекса

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]