У меня проблемы с индексатором. Критикуется использование 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’ не может быть разрешен
Некоторые факты:
Тем не менее код будет скомпилирован с и без ifdef. Но я хочу решить проблему индексации с помощью ifdef. Есть идеи?
С уважением
Rainer
Является ли ifdef серым, как на этом скриншоте:
Если это так, то 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:
Других решений пока нет …