В настоящее время я перемещаю несколько файлов классов из исходной среды Visual Studio в Qt Creator (версия 3.4.2).Qt Creator IDE кажется ложной маркировкой reinterpret_cast <:: GlobalType> как недопустимый
Я сделал несколько изменений, чтобы удовлетворить различия в компиляторе (в MinGW). Одна вещь, которая меня озадачивает, заключается в том, что среда IDE сообщает о конкретной ошибке (красная подчеркивание), но все еще компилируется в порядке.
Я уверен, что проблема изолирована от использования reinterpret_cast<T>
, где T
- это глобальное пространство имен.
Например, следующая строка будет отображаться как ошибочный в IDE, но по-прежнему будет компилировать:
::GetWindowThreadProcessId(window, reinterpret_cast<::LPDWORD>(&processId));
В подсказке говорится:
ожидается ';' получил «:»
Если изменить код, чтобы удалить ::
из LPDWORD
подсветка синтаксиса исчезает. Это нормально в среде IDE:
::GetWindowThreadProcessId(window, reinterpret_cast<LPDWORD>(&processId));
Я подозреваю, что это ошибка в среде IDE. Это безопасное предположение?
Я не планирую менять стиль кода для использования глобального пространства имен.
Я не знаю точно, но, вероятно, ошибка вызвана орграфом '<:'. Сделайте пробел между '<' и '::' и проверьте, помогает ли он. Кроме того, без этого места код не будет компилироваться. Подробнее о каталогах здесь https://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C – lisyarus
@lisyarus Добавление пространства, казалось, помогло с жалобой IDE, и оно компилируется – camelCase
Qt Creator по умолчанию использует собственный синтаксический анализатор C++. Этот синтаксический анализатор не является полным, совместимым со стандартами парсером C++ по необходимости. Вместо этого вы можете попробовать экспериментальную модель кода на основе LLVM, она должна принимать все, что LLVM будет. –